type is optional