Added tons of documentation