diff --git a/python/client.py b/python/client.py
index 4df46b8c58d906bc4d35f42784be24009db81080..682999200501bb743386c5ee7b47e0db5e1766ef 100644
--- a/python/client.py
+++ b/python/client.py
@@ -1,14 +1,26 @@
 #!/usr/bin/python
 
+import os
+
+SPLIT_N = 1
+SPLIT_I = 0
+
+SPLIT = os.environ.get("SPLIT")
+if SPLIT:
+  SPLIT = map(int, SPLIT.split('/'))
+  SPLIT_N = SPLIT[1]
+  SPLIT_I = SPLIT[0]-1
+
 PWIDTH = 5
-WIDTH = PWIDTH*96
+WIDTH = PWIDTH*96/SPLIT_N
+WOFFSET = WIDTH*SPLIT_I
 PHEIGHT = 7
 PPAD = 5
 HEIGHT = PHEIGHT*10
 
 import sys
 
-SERVER = "tcp://localhost:5571"
+SERVER = "tcp://localhost:5570"
 
 if len(sys.argv) >= 2:
   SERVER = sys.argv[1]
@@ -21,6 +33,7 @@ socket = context.socket(zmq.REQ)
 socket.connect(SERVER)
 
 def set_pixel(x, y, v):
+  x += WOFFSET
   tx = struct.pack('<BiiB', 0, x, y, v)
   socket.send_multipart([tx, b''])
   rx = socket.recv()
@@ -29,7 +42,15 @@ def set_pixel(x, y, v):
 def set_pixels(pixels):
   msg = []
   for x, y, v in pixels:
+    x += WOFFSET
     msg.append(struct.pack('<BiiB', 0, x, y, v))
   socket.send_multipart(msg + [b''])
   rx = socket.recv()
 
+def blit(x, y, w, h, pixels):
+  x += WOFFSET
+  assert w*h == len(pixels)
+  msg = struct.pack('<Biiii', 1, x, y, w, h)+b''.join(map(chr, pixels))
+  socket.send_multipart([msg, b''])
+  rx = socket.recv()
+