diff --git a/opal/browser/dom/element.rb b/opal/browser/dom/element.rb
index <HASH>..<HASH> 100644
--- a/opal/browser/dom/element.rb
+++ b/opal/browser/dom/element.rb
@@ -14,11 +14,12 @@ class Element < Node
 
   def self.new(node)
     if self == Element
-      case `node.nodeName`.downcase
-      when :input
-        Input.new(node)
+      name = `node.nodeName`.capitalize
 
-      else super
+      if Element.const_defined?(name)
+        Element.const_get(name).new(node)
+      else
+        super
       end
     else
       super
diff --git a/opal/browser/dom/element/image.rb b/opal/browser/dom/element/image.rb
index <HASH>..<HASH> 100644
--- a/opal/browser/dom/element/image.rb
+++ b/opal/browser/dom/element/image.rb
@@ -18,4 +18,6 @@ class Image < Element
   end
 end
 
+Img = Image
+
 end; end; end
dom/element: fix specialization creation