add TODO: for specifying the result's real type.