diff --git a/lib/turbine/vertex.rb b/lib/turbine/vertex.rb
index <HASH>..<HASH> 100644
--- a/lib/turbine/vertex.rb
+++ b/lib/turbine/vertex.rb
@@ -3,6 +3,9 @@ module Turbine
   # formed: a directed graph consists of a set of vertices and a set of arcs
   # (ordered pairs of vertices).
   class Vertex
+    # Public: Returns the unique key which identifies the vertex.
+    attr_reader :key
+
     # Public: Returns edges which connect other vertices to this one.
     attr_reader :in_edges
 
@@ -10,7 +13,7 @@ module Turbine
     attr_reader :out_edges
 
     # Creates a new Vertex.
-    def initialize(key = nil)
+    def initialize(key)
       @key       = key
       @in_edges  = []
       @out_edges = []
diff --git a/spec/turbine/vertex_spec.rb b/spec/turbine/vertex_spec.rb
index <HASH>..<HASH> 100644
--- a/spec/turbine/vertex_spec.rb
+++ b/spec/turbine/vertex_spec.rb
@@ -1,7 +1,13 @@
 require 'spec_helper'
 
 describe 'Turbine::Vertex' do
-  let(:vertex) { Turbine::Vertex.new }
+  let(:vertex) { Turbine::Vertex.new(:phil) }
+
+  context 'creating a new vertex' do
+    context 'without providing a key' do
+      it { expect(-> { Turbine::Vertex.new }).to raise_error(ArgumentError) }
+    end
+  end
 
   describe '#in_edges' do
     subject { vertex.in_edges }
Vertex.new must be provided a key.