diff --git a/Library/Homebrew/resource.rb b/Library/Homebrew/resource.rb
index 6a72a6e997c4cb16884b195e205340282a0d3825..3409845a04dd9e36c89257a6c12cdf8d3b2c715a 100644
--- a/Library/Homebrew/resource.rb
+++ b/Library/Homebrew/resource.rb
@@ -118,9 +118,9 @@ class Resource
 
   def detect_version(val)
     case val
-    when nil    then Version.detect(url, specs)
-    when String then Version.new(val)
-    when Hash   then Version.new_with_scheme(*val.shift)
+    when nil     then Version.detect(url, specs)
+    when String  then Version.new(val)
+    when Version then val
     else
       raise TypeError, "version '#{val.inspect}' should be a string"
     end
diff --git a/Library/Homebrew/test/test_resource.rb b/Library/Homebrew/test/test_resource.rb
index 3cfe592e1e2bba45337a909c9f552c2ef6384fe9..2baf4750e098c9b6eba5d03cd14083baf3a839f2 100644
--- a/Library/Homebrew/test/test_resource.rb
+++ b/Library/Homebrew/test/test_resource.rb
@@ -61,10 +61,10 @@ class ResourceTests < Test::Unit::TestCase
   end
 
   def test_version_with_scheme
-    scheme = Class.new(Version)
-    @resource.version('1.0' => scheme)
+    klass = Class.new(Version)
+    @resource.version klass.new("1.0")
     assert_version_equal '1.0', @resource.version
-    assert_instance_of scheme, @resource.version
+    assert_instance_of klass, @resource.version
   end
 
   def test_version_from_tag
diff --git a/Library/Homebrew/version.rb b/Library/Homebrew/version.rb
index 2e0bc85a5323a454c1bbf240a67a4b66cbf27aa8..cd1c149897ec78b6ff66af1556f1d8b44b490945 100644
--- a/Library/Homebrew/version.rb
+++ b/Library/Homebrew/version.rb
@@ -155,14 +155,6 @@ class Version
     StringToken::PATTERN
   )
 
-  def self.new_with_scheme(value, scheme)
-    if Class === scheme && scheme.ancestors.include?(Version)
-      scheme.new(value)
-    else
-      raise TypeError, "Unknown version scheme #{scheme.inspect}"
-    end
-  end
-
   def self.detect(url, specs={})
     if specs.has_key?(:tag)
       new(specs[:tag][/((?:\d+\.)*\d+)/, 1], true)