 
   isPowerOpen: -> @power().isOpen()
 
+  subExpressions: ->
+    [@base(), @power()]
+
+  clone: (new_vals={})->
+    data =
+      base: @base().clone()
+      power: @power().clone()
+      id: @id_value
+    other = @klass.build(_.extend({}, data, new_vals))
+    other
 ttm.class_mixer(Exponentiation)
 
 class Pi extends ExpressionComponent

      expression: _.map(@expression, (it)-> it.clone())
      is_error: @is_error
      is_open: @is_open
    @klass.build(_.extend({}, data, new_vals))

  # returns part of an expression
  last: (from_end=0)->


class Root extends ExpressionComponent
  initialize: (opts={})->
    super
    @degree_value = opts.degree
    @radicand_value = opts.radicand

