First attempt at reimplementing SpecConstr

Needs cleanup, but it works.
Cleanup and documentation
SpecConstr implementation notes