Implemented most of the functionality described in the projection section of the spec. Just need some clarification on the module and protocol declaration names. Will revisit after working on well-formedness.