use a lua function pointer for callback instead of a string
allow arguments for function callbacks