some refactoring and more++