both client and server compile