refactoring and major improvements--in particular, params now track where they came from, so it's possible (theoretically, not yet fully implemented) to update prototypes without losing inline comments