Week 1 rough draft: Significant work changing internals, need to finish commenting and testing for gcc