commented a large portion of the codebase; still needs to bee looked at more