refactoring of definitions