refactoring of abstractions