completed the majority of the interface class