Refactoring, split up code into smaller files, wrote better specs