rework primitive type