Add -spec, some documentation, and a header.
Fix circular dependency in Makefile