Merge upstream

This should get us back in sync with upstream, including my additions to parse controllers/libraries correctly.

/cc @mastahyeti @gregose