Lots of refactoring
More commits