 
 class CardHandler: NSObject, CFTReaderDelegate {
 
-    let cardSwipedSignal = RACSubject()
+    private let _cardStatus = BehaviorSubject(value: "")
+
+    var cardStatus: Observable<String> {
+        return _cardStatus.asObservable().skip(1)
+    }
+
     var card: CFTCard?
     
     let APIKey: String

    // handle other delegate call backs with the status messages

    func readerIsAttached() {
        cardSwipedSignal.sendNext("Reader is attatched");
    }

    func readerIsConnecting() {
        cardSwipedSignal.sendNext("Reader is connecting");
    }

    func readerIsDisconnected() {
        cardSwipedSignal.sendNext("Reader is disconnected");
        logger.log("Card Reader Disconnected")
    }

    func readerSwipeDidCancel() {
        cardSwipedSignal.sendNext("Reader did cancel");
        logger.log("Card Reader was Cancelled")
    }

    func readerGenericResponse(cardData: String!) {
        cardSwipedSignal.sendNext("Reader received non-card data: \(cardData) ");
        reader.beginSwipeWithMessage(nil);
    }

    func readerIsConnected(isConnected: Bool, withError error: NSError!) {
        if isConnected {
            cardSwipedSignal.sendNext("Reader is connected");
            reader.beginSwipeWithMessage(nil);

        } else {
            if (error != nil) {
                cardSwipedSignal.sendNext("Reader is disconnected: \(error.localizedDescription)");
            } else {
                cardSwipedSignal.sendNext("Reader is disconnected");
            }
        }
    }

        reader = CFTReader(andConnect: ())
        reader.delegate = self;
        reader.swipeTimeoutDuration(0)
        _cardStatus.onNext("Started searching")
    }

    func end() {
