add abstract ViewObject class