separate files for server and client