Last commit accidentally didn't contain new code. Code still needs cleanup and comments edited for clarity