moving things around more so they make more sense, also adding a bit o documentation.