refactoring for outputable model with annotation