Added tons of documentation, modified QLearning to mirror other methods