let's face it this commit contains about 21 different features and nobody's every going to use the git log for anything in this repo