allow blank attributes, type is private, added getType method