new draw interface
diff --git a/include/draw.h b/include/draw.h
index 152394f..07992c2 100644
--- a/include/draw.h
+++ b/include/draw.h
@@ -23,6 +23,8 @@
 typedef struct	Screen Screen;
 typedef struct	Subfont Subfont;
 
+struct Mux;
+
 extern	int	Rfmt(Fmt*);
 extern	int	Pfmt(Fmt*);
 
@@ -200,6 +202,8 @@
 	Image		*windows;
 	Image		*screenimage;
 	int		_isnewdisplay;
+	struct Mux	*mux;
+	int		srvfd;
 };
 
 struct Image
@@ -535,15 +539,29 @@
 void drawresizewindow(Rectangle);
 extern char *winsize;
 
-/*
- * Port magic.
- */
-int	_drawmsgread(Display*, void*, int);
-int	_drawmsgwrite(Display*, void*, int);
-int	_latin1(Rune*, int);
-
 int	mousescrollsize(int);
 
+/*
+ * RPC interface to draw server.
+ */
+struct Mouse;
+struct Cursor;
+int		_displaybouncemouse(Display *d, struct Mouse *m);
+int		_displayconnect(Display *d);
+int		_displaycursor(Display *d, struct Cursor *c);
+int		_displayinit(Display *d, char *label, char *winsize);
+int		_displaylabel(Display *d, char *label);
+int		_displaymoveto(Display *d, Point p);
+int		_displaymux(Display *d);
+int		_displayrddraw(Display *d, void *v, int n);
+int		_displayrdkbd(Display *d, Rune *r);
+int		_displayrdmouse(Display *d, struct Mouse *m, int *resized);
+char*		_displayrdsnarf(Display *d);
+int		_displaywrdraw(Display *d, void *v, int n);
+int		_displaywrsnarf(Display *d, char *snarf);
+int		_displaytop(Display *d);
+int		_displayresize(Display *d, Rectangle rect);
+
 #if defined(__cplusplus)
 }
 #endif