Heart of spec

Not yet ready for merging