split up the code into more modules