adding abstract methods