         }
     }
     
-    private func getAvailableProperties() -> [String:Any] {
+    private func getAvailableDesignProperties() -> [String:Any] {
         var data = [String:Any]();
-        return self.getProperties(data: data);
+        return self.getDesignProperties(data: data);
     }
     
-    public func getProperties(data:[String:Any]) -> [String:Any]{
+    public func getDesignProperties(data:[String:Any]) -> [String:Any]{
         var dataReturn = data;
         
         dataReturn["barTintColor"] = ["type":"COLOR", "value":self.navigationBar.barTintColor?.toHexString()];

            return objc_getAssociatedObject(self, &designKey) as? String
        }
        set(newValue) {
            objc_setAssociatedObject(self, &designKey, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN)
            checkForDesignUpdate()
            setupNotifications();
        }
    }

    func clear(){
        NotificationCenter.default.removeObserver(self)
    }
    
    func setupNotifications(){
        self.clear()
        NotificationCenter.default.addObserver(self, selector: #selector(updateFromNotification), name: UIDesign.LOADED, object: nil)
        let eventHighlight = "DESIGN_HIGHLIGHT_\(DesignKey!)"
        NotificationCenter.default.addObserver(self, selector: #selector(highlight), name: NSNotification.Name(rawValue:eventHighlight), object: nil)
        let eventText = "DESIGN_UPDATE_\(DesignKey!)"
        NotificationCenter.default.addObserver(self, selector: #selector(updateFromNotification), name: NSNotification.Name(rawValue:eventText), object: nil)
        
    }
    
    @objc private func updateFromNotification() {
        DispatchQueue.main.async(execute: {
            self.checkForDesignUpdate()
        })
    }
    
    
    public func highlight() {

    }
    
    private func checkForDesignUpdate(){
        if ((self.DesignKey?.isEmpty) != nil)  {
            guard let design = UIDesign.get(self.DesignKey!) else {
                UIDesign.createKey(self.DesignKey!, type:self.getType(), properties: self.getAvailableProperties())
                return;
            }
            let data = design["data"] as! [AnyHashable: Any];

            }
        }else{
            // NEED TO ADD PROPERTY
            let properties = self.getAvailableDesignProperties()
            UIDesign.addPropertyToKey(self.DesignKey!, property: property, attribute: properties[property])
        }
    }
