use define_method instead of method_missing. change attribute tracking to classes, instead of hashes