added abstraction to the attributes, cleaned out a bug case