Big refactoring and experimenting