add necessary abstract methods