Refactoring with abstracts (Work in progress)