Updated to improve efficiency, some readability, and a readme