Refactor and added tests
Solution cleanup
Cleanup