         interpolator:AnimatorInterpolator = AnimatorInterpolator(),
         updateBlock:((progress:Float) -> Void) = {value in },
         completionBlock:((completed:Bool) -> Void) = {value in }){
-
+            
             self.randomId = arc4random()
-            self.progress = -delay
+            self.progress = 0
             self.delay = delay
             self.duration = duration
             self.interpolator = interpolator
             self.updateBlock = updateBlock
             self.completeBlock = completionBlock
-        
+            
     }
     
     func addProgress(add:Float){

        self.displayLink = CADisplayLink(target: self, selector: Selector("update"))
        self.displayLink?.frameInterval = 1
        self.displayLink?.addToRunLoop(NSRunLoop.currentRunLoop(), forMode: NSRunLoopCommonModes)
    
    }
    
    private class func sharedInstance() -> Animator{
        return _animatorInstance
    }

    class func addAnimatorObject(object:AnimatorObject){
        self.sharedInstance().addAnimatorObject(object)
    }

        
        self.progress += add
        
        let progress = self.progress - delay;
        
        if progress > self.duration {
            self.updateBlock(progress: 1.0)
            self.completed = true
            self.completeBlock(completed: self.completed)
            
        } else if progress > 0 {
            self.updateBlock(progress: self.interpolator.valueForProgress(progress/self.duration))
        }
    }
    
    
    
    func interpolator(block:((progress:Float) -> Float)) -> AnimatorObject{
        self.interpolator = AnimatorInterpolator(block: block)
        return self
