 }
 
 /// properties to describe the brush
-internal class BrushProperties {
+public class BrushProperties {
     /// color of the brush
     internal var color: CIColor!
     /// width of the brush
     internal var width: CGFloat!
     
     init() {
-        color = CIColor(color: UIColor.blackColor())
-        width = CGFloat(10.0)
+        self.color = CIColor(color: UIColor.blackColor())
+        self.width = CGFloat(10.0)
     }
     init(properties: BrushProperties) {
-        color = properties.color
-        width = properties.width
+        self.color = properties.color
+        self.width = properties.width
+    }
+    init(color: CIColor, width: CGFloat) {
+        self.color = color
+        self.width = width
     }
 }
 
 /// a drawing stroke
-internal class Stroke {
+public class Stroke {
     /// the points that make up the stroke
-    internal var points: NSMutableArray!
+    internal var points: [String]!
     /// the properties of the stroke
     internal var properties: BrushProperties!
     
     init() {
-        points = []
-        properties = BrushProperties()
+        self.points = []
+        self.properties = BrushProperties()
+    }
+    
+    init(points: [String], properties: BrushProperties) {
+        self.points = points
+        self.properties = properties
     }
 }
 

    
    /// used to keep track of all the strokes
    internal var stack: [Stroke]!
    private var pointsArray: NSMutableArray!
    
    private var lastPoint = CGPoint.zero
    

        if let touch = touches.first {
            lastPoint = touch.locationInView(self)
            pointsArray = []
            pointsArray.append(NSStringFromCGPoint(lastPoint))
        }
    }
    
