Another round of design changes w/ more semantic code