implementation is now separate
moved as much as possible to c89spec.c
minor formatting and docs