 	*/
 	public func peripheral(peripheral: CBPeripheral, didWriteValueForCharacteristic characteristic: CBCharacteristic, error: NSError?) {
 
-			dispatch_async(self.operationQ, { () -> Void in
-				var tgtReq: WriteRequest?
-				for req in self.writeRequests {
-					if req.characteristic == characteristic {
-						tgtReq = req
-						break
-					}
-				}
-				if let req = tgtReq {
-					req.timedOut = false
-					dispatch_async(dispatch_get_main_queue(), { () -> Void in
-						if let errorInfo = error {
-							// write failed
-							req.failure?(errorInfo)
-						} else {
-							// write succeed
-							req.success?(nil)
-						}
-					})
-					dispatch_async(self.requestQ, { () -> Void in
-						self.writeRequests.remove(req)
-					})
-				}
-			})
-
+		dispatch_async(self.operationQ, { () -> Void in
+			var tgtReq: WriteRequest?
+			for req in self.writeRequests {
+				if req.characteristic == characteristic {
+					tgtReq = req
+					break
+				}
+			}
+			if let req = tgtReq {
+				req.timedOut = false
+				dispatch_async(dispatch_get_main_queue(), { () -> Void in
+					if let errorInfo = error {
+						// write failed
+						req.failure?(errorInfo)
+					} else {
+						// write succeed
+						req.success?(nil)
+					}
+				})
+				dispatch_async(self.requestQ, { () -> Void in
+					self.writeRequests.remove(req)
+				})
+			}
+		})
 	}
 
 	/*!

						// discovering failed
						req.failure?(errorInfo)
					} else {
						// discovering succeed
						req.success?(nil)
					}
				})
				dispatch_async(self.requestQ, { () -> Void in
					self.characteristicDiscoveringRequests.remove(req)
				})

	*/
	public func peripheral(peripheral: CBPeripheral, didDiscoverCharacteristicsForService service: CBService, error: NSError?) {
		dispatch_async(self.operationQ) { () -> Void in
			// multiple reqs of discovering characteristic within a short duration will be responsed simultaneously
			// 1. check if characteristic UUID specified in req...
			for req in self.characteristicDiscoveringRequests {
				if let uuids = req.characteristicUUIDs {
					// if so, check if all interested characteristics are discovered, otherwise return directly
					if !self.areCharacteristicsAvailable(uuids: uuids) {
						return
					}
				}
			}
			// 2. all interested characteristics are discovered, OR in case no characteristic UUID specified in req...
			for req in self.characteristicDiscoveringRequests {
				req.timedOut = false
				dispatch_async(dispatch_get_main_queue(), { () -> Void in
