many type for return type