just some more work fleshing out the interface for gl type templating