Schema factory (wip)