Really fleshed out a bunch of stuff on this including documentation