Driven off actual headers rather than hard-coded offsets. Lots of redundancy still needs resolving.