code cleaned up and filled out with all major parts, needs testing