A lot of refactoring and a hard days work.