split the server into separate modules