quick ruby modeling -- basically attr_accessor with default values, light-weight casting, and a constructor