created abstract methods