separate client and server side