By Austin

Some functions are missing; had to add them myself.