don't use primitive type