* refactoring code