restructure VmxApi to allow external prototype definitions on vmxApi.fn