 			let watchers = JSON["watchers_count"] as? Int
 			dispatch_async(dispatch_get_main_queue()) {
 				let state = self.getState()
-				self.replaceState(DemoState1(todos: state.todos, like: state.like, watcherCount: watchers))
+				self.replaceState(DemoState1(todos: state.todos, like: state.like, watcherCount: watchers, selectedIndex: nil))
 			}
 		}
+
+		eventMonitor = NSEvent.addLocalMonitorForEventsMatchingMask(.KeyDownMask) { event in
+			let characters = event.charactersIgnoringModifiers! as NSString
+			let character = Int(characters.characterAtIndex(0))
+			if character == NSDeleteCharacter {
+				let state = self.getState()
+				if let index = state.selectedIndex {
+					println("Delete \(state.todos[index])")
+				}
+			}
+			println(event.window?.firstResponder)
+			return event
+		}
+	}
+
+	override func componentWillDerealize() {
+		NSEvent.removeMonitor <^> eventMonitor
 	}
 
 	class func render(component: Few.Component<DemoState1>, state: DemoState1) -> Element {
 		let count = Label(text: "\(state.todos.count)")
 
 		let button = Button(title: "Add") {
-			component.replaceState(DemoState1(todos: state.todos + ["a nu todo"], like: state.like, watcherCount: state.watcherCount))
+			component.replaceState(DemoState1(todos: state.todos + ["a nu todo"], like: state.like, watcherCount: state.watcherCount, selectedIndex: nil))
 		}
 
 		let likedness = (state.like ? "do" : "donut")
 		let statusLabel = Label(text: "I \(likedness) like this.")
 
 		let toggleButton = Button(title: "Toggle") {
-			component.replaceState(DemoState1(todos: state.todos, like: !state.like, watcherCount: state.watcherCount))
+			component.replaceState(DemoState1(todos: state.todos, like: !state.like, watcherCount: state.watcherCount, selectedIndex: nil))
 		}
 
 		let likesIt = maybe(state.watcherCount, Label(text: "Checking…")) {

		}

		let todos = state.todos.map { Label(text: $0) }
		let list = List(todos)
		list.frame.size = CGSize(width: 100, height: 100)
		children += [list]


	let todos: [String] = []
	let like = false
	let watcherCount: Int?
	let selectedIndex: Int?
}

class DemoComponent1<S>: Few.Component<DemoState1> {
	var eventMonitor: AnyObject?

	init() {
		let initialState = DemoState1(todos: (1...100).map { "Todo #\($0)" }, like: false, watcherCount: nil, selectedIndex: nil)
		super.init(render: DemoComponent1.render, initialState: initialState)
	}

	override func componentDidRealize() {
		let URL = NSURL(string: "https://api.github.com/repos/ReactiveCocoa/ReactiveCocoa")
		GET(URL!) { JSON, response, error in
			if JSON == nil {
				println("Error: \(error)")
				println("Response: \(response)")
