public function setAttributes(array $attributes) {
        foreach($attributes as $key => $attribute) {
            if(!($attribute instanceof AttributeInterface)) {
                if(is_array($attribute)) {
                    $attr = new AttributeCollection($key);
                    $attr->setAttributes($attribute);
                    $attribute = $attr;
                } else {
                    $attribute = new Attribute($key, $attribute);
                }
            }

            $this->attributes[ $attribute->getName() ] = $attribute;
        }
    }