Finished the abstract class implementation