Addressed issues 58, 63, 65, and 73, with added functionality for issue 66, to be implemented later