Trying add an abstraction layer for gfx