         self.delegate = delegate
         _state = initialState //set the primitive to avoid calling the delegate.
         
-        self.queue = dispatch_queue_create(lockingQueueName, nil)
+        self.queue = dispatch_queue_create(lockingQueueName, DISPATCH_QUEUE_SERIAL)
+
     }
 }
 

                }
            }
            else {
                dispatch_sync(dispatch_get_main_queue()) {
                    self.delegate.failedTransitionFrom(self._state, to: newValue)
                }
            }

    private var _state : P.StateType! {
        
        didSet {
            dispatch_async(dispatch_get_main_queue()) {
                self.delegate.didTransitionFrom(oldValue, to: self._state)
            }
        }
