Breaking out code into separate modules

seems like you guys should have a `required` hash object as well ;)