Extracted an interface for good practice and added new unimplemented
methods for the students to complete.