Added a bunch of new stuff that reaaally needs to be fleshed out.