adds what feels like all the methods we'll need