         return (total,used,available)
     }
 
+    /// The stats formatted in a String
+    open var stringStats:String{
+        let stats = self.stats()
+        return "Total:\(stats.total) used:\(stats.used) available:\(stats.available)"
+    }
+
+
     /// You must call this method regularly to recycle off screen views.
     open func recycleRecyclableViews(){
-        for vs in self._viewsReferers{
-            if let superview = vs.view.superview{
-                if  vs.view.frame.origin.x + vs.view.frame.width + self.minOffScreenDistance < superview.frame.origin.x ||
-                    vs.view.frame.origin.x > superview.frame.origin.x + superview.frame.width + self.minOffScreenDistance ||
-                    vs.view.frame.origin.y + vs.view.frame.height + self.minOffScreenDistance < superview.frame.origin.y ||
-                    vs.view.frame.origin.y > superview.frame.origin.y + superview.frame.height + self.minOffScreenDistance {
-                    let _ = self.recycleView(view: vs.view)
+        for referer in self._viewsReferers{
+            if let superview = referer.view.superview{
+                if  referer.view.frame.origin.x + referer.view.frame.width + self.minOffScreenDistance < superview.frame.origin.x ||
+                    referer.view.frame.origin.x > superview.frame.origin.x + superview.frame.width + self.minOffScreenDistance ||
+                    referer.view.frame.origin.y + referer.view.frame.height + self.minOffScreenDistance < superview.frame.origin.y ||
+                    referer.view.frame.origin.y > superview.frame.origin.y + superview.frame.height + self.minOffScreenDistance {
+                    referer.view.removeFromSuperview()
+                    referer.available = true
                 }
-            }else if vs.available == false{
+            }else if referer.available == false{
                 // The clients may remove the view from the superview to force the recycling
-                self.recycleView(view: vs.view)
+                referer.view.removeFromSuperview()
+                referer.available = true
             }
         }
     }
+
+
 
 
     /// Recycles explicitely a view

        })
    }



}

    ///   - view: the view to recycle
    open func recycleView(view:BXView)->Bool{
        // Update the view status
        if let vs = self._viewsReferers.first(where: { (referer) -> Bool in
            return referer.view.UID == view.UID
        }){
            view.removeFromSuperview()
            vs.available = true
