Change return to unit.  Reorganizing signatures.

Replace name return with unit to use more standard monad terminology.
Split signatures into smaller peices in hopes of minimizing dependence
and maximizing re-use.