Generic phantom type

Submitting PR so it is easier to review. Not necessarily ready but...
These can be elide. I'll submit another PR later to fix it.