this is a *totally* horked branch for now.  big refactor