add the rest of the methods, clean up arg passing