changed field names to numbers, added a bunch of new metafunctions, doesn't currently compile