         let url = NSURL.fileURLWithPath(path)
         return try? AVAudioPlayer(contentsOfURL: url)
     }()
+    
+    lazy private(set) var shakeSignal = Signal<(), NoError>.pipe()
     
     let client: Client
     let persistenceController: PersistenceController

    
    override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent?) {
        if motion == .MotionShake {
            fetchRandomItem()
        }
    }

        episodeView.episodeImageView.hidden = false
        
        client.fetchPictureForEpisodeId(String(randomEpisode.id))
            .takeUntil(shakeSignal.0)
            .on(completed: { self.analyticsController.trackEvent(.Shake) })
            .flatMap(FlattenStrategy.Latest, transform: { (image) -> SignalProducer<(UIImage, UIImage), NSError> in
                return SignalProducer(value: (image, convertToBlackAndWhite(image)))
