refactor interface class