diff --git a/gertty/view/diff.py b/gertty/view/diff.py
index 9ae47dd..54f10b5 100644
--- a/gertty/view/diff.py
+++ b/gertty/view/diff.py
@@ -103,14 +103,33 @@ class DiffLine(urwid.Button):
                }
         self._w = urwid.AttrMap(col, None, focus_map=map)
 
-class DiffContextButton(urwid.Button):
+class DiffContextButton(urwid.WidgetWrap):
     def selectable(self):
-        return False #TODO: change
+        return True
 
-    def __init__(self, chunk):
-        super(DiffContextButton, self).__init__('...')
+    def __init__(self, view, diff, chunk):
+        buttons = urwid.Columns([
+                urwid.Text(''),
+                ('pack', mywid.FixedButton("Expand previous 10", on_press=self.prev)),
+                ('pack', mywid.FixedButton("Expand %s lines of context" % len(chunk.lines),
+                                           on_press=self.all)),
+                ('pack', mywid.FixedButton("Expand next 10", on_press=self.next)),
+                urwid.Text(''),
+                ], dividechars=4)
+        super(DiffContextButton, self).__init__(buttons)
+        self.view = view
+        self.diff = diff
         self.chunk = chunk
 
+    def prev(self, button):
+        self.view.expandChunk(self.diff, self.chunk, from_start=10)
+
+    def all(self, button):
+        self.view.expandChunk(self.diff, self.chunk, expand_all=True)
+
+    def next(self, button):
+        self.view.expandChunk(self.diff, self.chunk, from_end=-10)
+
 class DiffView(urwid.WidgetWrap):
     help = mywid.GLOBAL_HELP + """
 This Screen
@@ -171,7 +190,7 @@ This Screen
                     if not chunk.first:
                         lines += self.makeLines(diff, chunk.lines[:10], comment_lists)
                         del chunk.lines[:10]
-                    button = DiffContextButton(chunk)
+                    button = DiffContextButton(self, diff, chunk)
                     chunk.button = button
                     lines.append(button)
                     if not chunk.last:
@@ -225,7 +244,8 @@ This Screen
                         self.expandChunk(diff, chunk, comment_lists, from_end=i-10)
                     break
 
-    def expandChunk(self, diff, chunk, comment_lists, from_start=None, from_end=None):
+    def expandChunk(self, diff, chunk, comment_lists={}, from_start=None, from_end=None,
+                    expand_all=None):
         self.log.debug("Expand chunk %s %s %s" % (chunk, from_start, from_end))
         add_lines = []
         if from_start is not None:
@@ -236,6 +256,10 @@ This Screen
             index = self.listbox.body.index(chunk.button)+1
             add_lines = chunk.lines[from_end:]
             del chunk.lines[from_end:]
+        if expand_all:
+            index = self.listbox.body.index(chunk.button)
+            add_lines = chunk.lines[:]
+            del chunk.lines[:]
         if add_lines:
             lines = self.makeLines(diff, add_lines, comment_lists)
             self.listbox.body[index:index] = lines