Abstract and interface refactoring.