ditch the reflection voodoo on metabox creation, use interfaces instead