if no type is specified, required implies non empty string