Continue separation, some refactoring and rewriting