separate the server side for modularity