static int writen(int fd, char *ptr, int nbytes);
 static int readln(int fd, char *out, int nbytes);
-static int echo(int, void *);
-static int upper_echo(int, void *);
+
+static int new_conn(int, struct timeval *, void *);
+static int reject(int);
+static int disconnect(int, struct timeval *, void *);
+
+static int echo(int, struct timeval *, void *);
+static int upper_echo(int, struct timeval *, void *);
 
 #define ECHO_PORT                      9999
 #define UPPER_ECHO_PORT                9998
 #define SRV_UPPER_ECHO         1
 
 static struct glite_srvbones_service service_table[] = {
-       { "Echo Service",               -1, NULL, echo, NULL, NULL },
-       { "Upper Echo Service", -1, NULL, upper_echo, NULL, NULL }
+       { "Echo Service",               -1, new_conn, echo, reject, disconnect },
+       { "Upper Echo Service", -1, new_conn, upper_echo, reject, disconnect }
 };
 
 int main(void)
                exit(1);
        }
 
+
+       glite_srvbones_set_param(GLITE_SBPARAM_SLAVES_COUNT, 1);
        glite_srvbones_run(NULL, service_table, sizofa(service_table), 1);
 
 
        return 0;
 }
 
-int upper_echo(int fd, void *data)
+int upper_echo(int fd, struct timeval *to, void *data)
 {
        int             n, i;
        char    line[80];
                return n;
        }
        else if ( n == 0 )
-               return 0;
+               return ENOTCONN;
 
        for ( i = 0; i < n; i++ )
                line[i] = toupper(line[i]);
        return 0;
 }
 
-int echo(int fd, void *data)
+int echo(int fd, struct timeval *to, void *data)
 {
        int             n;
        char    line[80];
                return n;
        }
        else if ( n == 0 )
-               return 0;
+               return ENOTCONN;
 
        if ( writen(fd, line, n) != n )
        {
        return 0;
 }
 
+int new_conn(int conn, struct timeval *to, void *cdata)
+{
+       dprintf(("srv-bones example: new_conn handler\n"));
+       return 0;
+}
+
+int reject(int conn)
+{
+       dprintf(("srv-bones example: reject handler\n"));
+       return 0;
+}
+
+int disconnect(int conn, struct timeval *to, void *cdata)
+{
+       dprintf(("srv-bones example: disconnect handler\n"));
+       return 0;
+}
+
 int writen(int fd, char *ptr, int nbytes)
 {
        int             nleft, nwritten;