should this return nil or Hash.new? maybe raise an exception?