note that interface{} is still incomplete