abstraction

class abstraction first