     toBeReturned.print = ->
       return @value
 
-    toBeReturned.matchMethodAndPassParams = (theContext, methodInvocationToBeChecked) ->
+    toBeReturned.findMessageAndBindParams = (theContext, methodInvocationToBeChecked) ->
       console.log "evaluation " + indentation() + "  !!! looking up method invocation " + methodInvocationToBeChecked.print() + " with signatures!" + " PC: " + theContext.programCounter
       console.log "evaluation " + indentation() + "  !!! looking up method invocation, is method empty? " + methodInvocationToBeChecked.isEmpty() + " PC: " + theContext.programCounter
 

      console.log "evaluation " + indentation() + "messaging number " + @value + " with " + message.print()

      console.log "evaluation " + indentation() + "before matching game the message is: " + message.print() + " and PC: " + theContext.programCounter
      returned = @matchMethodAndPassParams(theContext, message)
      console.log "evaluation " + indentation() + "after matching game the message is: " + message.print() + " and PC: " + theContext.programCounter

      if returned?
        # "matchMethodAndPassParams" has already done the job of
        # making the call and fixing theContext's PC and
        # updating the return value, we are done here
        return

      if !message.isEmpty()
        if message.firstElement().value == "print"
          console.log "evaluation " + indentation() + " RNumber about to print, message: " + message.print() + " and PC: " + theContext.programCounter

          console.log "///////// program printout: " + @value

          message = skipNextMessageElement message, theContext

          theContext.returned = @
          rosettaContexts.pop()
          return
        else if message.firstElement().value == "plus"

          # skip the plus symbol
          message = skipNextMessageElement message, theContext


          # now evaluate the rest of the list
          # now we are using the message as a list because we have to evaluate it.
          # to evaluate it, we treat it as a list and we send it the empty message
          [theValue, unusedRestOfMessage] = rosettaEval message, theContext

          @value += theValue.value
          theContext.returned = @
          return


      if !message.isEmpty()

            console.dir paramAtom
            console.log "evaluation " + indentation() + "  matching - atom inside the parameter: " + paramAtom.print() + " PC: " + theContext.programCounter
            if isEvaluatingParam(eachElementOfSignature)
              console.log "evaluation " + indentation() + "  matching - need to evaluate next msg element from invocation: " + method.print() + " and bind to: " + paramAtom.print() + " PC: " + theContext.programCounter
              [valueToBeBound, method] = evalFirstMessageElement method, theContext
            else
              console.log "evaluation " + indentation() + "  matching - need to get next msg element from invocation: " + method.print() + " and bind to: " + paramAtom.print() + " PC: " + theContext.programCounter
              [valueToBeBound, method] = method.nextElement()
            # TODO we should insert without repetition
            if !theContext.self.rosettaClass.tempVariables?
              theContext.self.rosettaClass.tempVariables = []
            theContext.self.rosettaClass.tempVariables.push paramAtom
            theContext.tempVariablesDict[paramAtom.value] = valueToBeBound
            # ok we matched a paramenter, now let's keep matching further
            # parts of the signature
            continue

        # ok a the signature has matched completely
        if eachSignature.isEmpty() and soFarEverythingMatched

          # now, the correct PC that we need to report is
          # the original plus what we consumed from matching the
          # signature.
          console.log "evaluation " + indentation() + "  matching - consumed from matching this sig: " + (method.cursorStart - originalMethodStart)

          theContext.programCounter = originalProgramCounter + method.cursorStart - originalMethodStart

          return countSignaturePosition

      # we are still here trying to match but
      # there are no signatures left, time to quit.
      # fix the program counter first! Put it back
      # to what it was because we matched nothing from
      # the message we were sent.
      console.log "evaluation " + indentation() + "  matching - no match found" + " PC: " + theContext.programCounter
      theContext.programCounter = originalProgramCounter
      return null
