final component-class design