Lots of refactoring
Lots of refactoring