 	 * @param {Function} reject Call it to make a promise reject.
 	###
 	addHandler = (self, onFulfilled, onRejected, resolve, reject) ->
-		offset = self._thenOffset
-		self._handlers[offset] = onFulfilled
-		self._handlers[offset + 1] = onRejected
-		self._handlers[offset + 2] = resolve
-		self._handlers[offset + 3] = reject
-		self._thenOffset += $groupNum
+		offset = self._hCount
+		self[offset] = onFulfilled
+		self[offset + 1] = onRejected
+		self[offset + 2] = resolve
+		self[offset + 3] = reject
+		self._hCount += $groupNum
 
 		if self._state != $pending
 			resolveHanlers self, offset


		offset = 0

		while offset < self._thenOffset
			resolveHanlers self, offset

			offset += $groupNum

	###
	constructor: (executor) ->
		@_value = null

		executor genTrigger(@, $resolved), genTrigger(@, $rejected)

