DRYing up solution
more solution naming edits
major refactor: removed implementation specs, using spies