created abstraction class