WIP: builds but messy.  Hacking the pieces into place to factor out Fusion.
WIP: Add functor instances for OptDescr and convert to Dynamic