use interface{} for userdata