Add a bunch of methods and tests