diff --git a/lib/aethyr/core/objects/game_object.rb b/lib/aethyr/core/objects/game_object.rb
index 873fe8c64e8edaab48254fb51123c768021deff6..710fbceb79e59447a47910a6d1833841ae66a82d 100644
--- a/lib/aethyr/core/objects/game_object.rb
+++ b/lib/aethyr/core/objects/game_object.rb
@@ -83,10 +83,6 @@ class GameObject < Publisher
     @admin = false
 
     load_defaults
-    puts "checking gender for #{@name}"
-    puts @gender
-    puts "and defaults"
-    puts @@defaults
   end
 
   def attributes
diff --git a/lib/aethyr/core/util/defaults.rb b/lib/aethyr/core/util/defaults.rb
index 5c120cb577080d32e534833720b67075c8f68f88..090a671099a737b3a7645c62d8666938b12b71a0 100644
--- a/lib/aethyr/core/util/defaults.rb
+++ b/lib/aethyr/core/util/defaults.rb
@@ -10,13 +10,15 @@ module Defaults
   end
 
   def load_defaults
-    return if not @@defaults.key? self.class.name.to_s
-    local_defaults = @@defaults[self.class.name.to_s]
-    local_defaults.each do |default|
-      attribute = default[:attribute]
-      block = default[:block]
-      if not instance_variable_defined?(attribute)
-        self.set_default(attribute, &block)
+    @@defaults.each do |klazz, local_defaults|
+      if self.kind_of? klazz
+        local_defaults.each do |default|
+          attribute = default[:attribute]
+          block = default[:block]
+          if not instance_variable_defined?(attribute)
+            self.set_default(attribute, &block)
+          end
+        end
       end
     end
   end
@@ -30,107 +32,13 @@ module Defaults
 
   module ClassMethods
     def default(attribute_raw, &block)
-      default_exists = Defaults.defaults.key? self.name.to_s
-      local_defaults = default_exists ? Defaults.defaults[self.name.to_s] : []
+      default_exists = Defaults.defaults.key? self
+      local_defaults = default_exists ? Defaults.defaults[self] : []
 
       attribute = "@".concat(attribute_raw.to_s).to_sym
 
       local_defaults.push({:attribute => attribute, :block => block})
-      Defaults.defaults[self.name.to_s] = local_defaults if not default_exists
+      Defaults.defaults[self] = local_defaults if not default_exists
     end
   end
 end
-
-class Foo
-  include Defaults
-
-  attr_reader :sex
-
-  default(:bar) {"foobar"}
-  default(:baz) { |this| this.instance_variable_get(:@bar).concat(" and baz") }
-  #default(:sex) {"m"}
-  default(:gender) do |this|
-    if this.sex == 'm'
-      "Lexicon::Gender::MASCULINE"
-    elsif this.sex == 'f'
-      "Lexicon::Gender::FEMININE"
-    else
-      "Lexicon::Gender::NEUTER"
-    end
-  end
-
-  def initialize
-    @dummy_var = "this is just so something exists"
-    @sex = 'm'
-    load_defaults
-  end
-
-  def local_failbar
-    @failbar
-  end
-
-  def local_bar
-    @bar
-  end
-
-  def self.check_df
-    @@defaults
-  end
-
-  def local_df
-    @@defaults
-  end
-
-  def class_vars_proxy
-    self.class.instance_variables
-  end
-
-  def local_baz
-    @baz
-  end
-
-  def local_sex
-    @sex
-  end
-
-  def local_gender
-    @gender
-  end
-end
-
-puts "check_df"
-puts Foo.check_df
-
-puts "local_df"
-foo = Foo.new
-puts foo.local_df
-
-puts "Defaults::defaults"
-puts Defaults::defaults
-
-#puts "foo.defaults"
-#puts foo.defaults
-
-puts "local_bar"
-puts foo.local_bar
-
-puts "local_failbar"
-puts foo.local_failbar
-
-puts "instance vars"
-puts foo.instance_variables
-
-puts "class vars"
-puts Foo.instance_variables
-
-puts "class vars proxy"
-puts foo.class_vars_proxy
-
-puts "local_baz"
-puts foo.local_baz
-
-puts "local_sex"
-puts foo.local_sex
-
-puts "local_gender"
-puts foo.local_gender