def determine_gotcha_validity(expected_gotcha_count = 1)
      return false unless params[:gotcha_response].kind_of?(Enumerable)    
      return false unless params[:gotcha_response].count == expected_gotcha_count
      params[:gotcha_response].all? do |ident, value|
        type, hash = ident.split '-'
        return false unless Object.const_defined?(type)
        return false unless (klass = Object.const_get(type)) < Gotcha::Base
        Digest::MD5.hexdigest(klass.down_transform(value)) == hash
      end
    end
def determine_gotcha_validity(expected_gotcha_count = 1)
      return false unless params[:gotcha_response].kind_of?(Enumerable)    
      return false unless params[:gotcha_response].count == expected_gotcha_count
      params[:gotcha_response].all? do |ident, value|
        type, hash = ident.split '-'
        return false unless Object.const_defined?(type)
        return false unless (klass = Object.const_get(type)) < Gotcha::Base
        Digest::MD5.hexdigest(klass.down_transform(value)) == hash
      end
    end
Go through each response, using the down_transform
 of the original class (as long as it is a subclass of Gotcha::Base)
 and compare the hash to the hash of the value