Modify template to support data.
Another nearly total rewrite.
A lot of small tweaks. Terrible commit history.
Add a packed layout. Questionable value.