Feature/refactoring and more