Refactored project to be split into modules.