adding a bunch of defs because it works better
added a bunch of methods