Feature/code refactoring