Updated to add new features and clear up some inaccuracies now things have changed.