     /// Performs the actual IO for sending data.
     public func write() throws -> Bool {
         
-        print("Will write")
+        //print("Will write")
         
         guard let sendOpcode = pickNextSendOpcode()
             else { return false }
         
         assert(sendOpcode.data.count <= maximumTransmissionUnit, "Trying to send \(sendOpcode.data.count) bytes when MTU is \(maximumTransmissionUnit)")
         
-        print("Sending data... (\(sendOpcode.data.count) bytes)")
+        //print("Sending data... (\(sendOpcode.data.count) bytes)")
         
         try socket.send(Data(byteValue: sendOpcode.data))
         
         let opcode = sendOpcode.dynamicType.PDUType.attributeOpcode
         
-        print("Did write \(opcode)")
+        //print("Did write \(opcode)")
         
         /* Based on the operation type, set either the pending request or the
         * pending indication. If it came from the write queue, then there is

        guard let opcode = ATT.Opcode(rawValue: opcodeByte)
            else { throw Error.GarbageResponse(recievedData) }
        
        print("Recieved opcode \(opcode)")
        
        // Act on the received PDU based on the opcode type
        switch opcode.type {

    /// Performs the actual IO for recieving data.
    public func read() throws {
        
        //print("Will read")
        
        let recievedData = try socket.recieve(maximumTransmissionUnit)
        
        //print("Recieved data")
        
        // valid PDU data length
        guard recievedData.byteValue.count >= ATT.MinimumPDULength
