third refactoring class inherit wave