       append_addition: AppendAddition
       append_subtraction: AppendSubtraction
       negate_last: Negation
-      open_sub_expression: OpenSub
-      close_sub_expression: CloseSub
+      open_sub_expression: OpenSubExpression
+      close_sub_expression: CloseSubExpression
       append_division: AppendDivision
-      pi: Pi
+      pi: AppendPi
       square_root: SquareRoot
 
     return exports

          expression.append(new_last)

      invoke: (expression)->
        _FinalOpenSubExpressionApplcation.build((expr)=> @onFinalExpression(expr)).
          invokeOrDefault(expression)

    class_mixer(AppendDecimal)


          expr.power()
        else false

      invokeOrDefault: (@action)->
        result = @findAndPerformAction(@expr)
        if @wasFound()
          result
        else
          @action(@expr)

    class_mixer(_FinalOpenSubExpressionApplication)


    class CloseSubExpression
      initialize: ->
        @handled = false
      invoke: (expression)->
        logger.info("CloseSubExpression#invoke")
        _FinalOpenSubExpressionApplication.build(expression).
          invoke((expression)-> expression.close())
    class_mixer(CloseSubExpression)



    # TODO this needs to ahve final open sub expression application
    class AppendPi
      invoke: (expression)->
        _ImplicitMultiplication.build().
          onNumeric(expression).
          append(comps.pi.build())

    class_mixer(AppendPi)

    class SquareRoot extends ExpressionManipulation
      invoke: (expression)->
