Split up code into modules for easier development and maintenance