separated server and client