refactoring: class->interface