split code into modules