     private var keyValue = UnSafeMutableContainer<Int8>(0)
     private var key : UnsafeMutablePointer<Int8>  { get { return keyValue.unsafe_pointer } }
     
+    
+    public init() {
+        
+    }
+    
     // Two STRONG implementations - Any and AnyObject.
     // AnyObject will match NSObject compatible values
     // Any will match any class, using the Strong<T> to wrap the object in a class so it can be set correctly
     // This is the "default set".
-    func setStrongValueOn<T : Any>(object:A, value : T?)
+    public func setStrongValueOn<T : Any>(object:A, value : T?)
     {
         // so we can't 'test' for AnyObject but we can seem to test for NSObject
         let policy = objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC

        }
    }
    
    func setCopyValueOn<T : AnyObject>(object:A, value : T?)
    {
        let policy = objc_AssociationPolicy.OBJC_ASSOCIATION_COPY
        objc_setAssociatedObject(object, key, value, policy)
    }
    
    // convience - Set is always Strong by default
    func setValueOn<T : Any>(object:A, value : T?)
    {
        self.setStrongValueOn(object, value: value)
    }
    
    func setValueOn<T : AnyObject>(object:A, value : T?)
    {
        self.setStrongValueOn(object, value: value)
    }
    
    func getValueFrom<T : Any>(object:A) -> T?
    {
        let v: AnyObject? = objc_getAssociatedObject(object,key)
        switch v {

        }
    }
    
    public func getValueFrom<T : Any>(object:A, defaultvalue : T) -> T
    {
        let value: T? = getValueFrom(object)
        if let v = value {
