class ALitteral(object):
    def __init__(self, value):
        self._value = value

    def __str__(self):
        return str(self._value)

    def value(self, evaluation):
        try:
            return evaluation[self._value]
        except KeyError:
            return self._value


class ABiOp(object):
    def __init__(self, a1, a2):
        self._a1 = a1
        self._a2 = a2

    def __str__(self):
        return '(' + str(self._a1) + ' ' + self.symbol + ' ' + str(self._a2) + ')'


class Addition(ABiOp):
    def __init__(self, a1, a2):
        super(Addition, self).__init__(a1, a2)
        self.symbol = '+'

    def value(self, evaluation):
        v1 = self._a1.value(evaluation)
        v2 = self._a2.value(evaluation)
        return v1 + v2


class Subtraction(ABiOp):
    def __init__(self, a1, a2):
        super(Subtraction, self).__init__(a1, a2)
        self.symbol = '-'

    def value(self, evaluation):
        v1 = self._a1.value(evaluation)
        v2 = self._a2.value(evaluation)
        return v1 - v2


class Product(ABiOp):
    def __init__(self, a1, a2):
        super(Product, self).__init__(a1, a2)
        self.symbol = '*'

    def value(self, evaluation):
        v1 = self._a1.value(evaluation)
        v2 = self._a2.value(evaluation)
        return v1 * v2


class Division(ABiOp):
    def __init__(self, a1, a2):
        super(Division, self).__init__(a1, a2)
        self.symbol = '/'

    def value(self, evaluation):
        v1 = self._a1.value(evaluation)
        v2 = self._a2.value(evaluation)
        return float(v1) / float(v2)


class EuclideanDivision(ABiOp):
    def __init__(self, a1, a2):
        super(EuclideanDivision, self).__init__(a1, a2)
        self.symbol = '//'

    def value(self, evaluation):
        v1 = self._a1.value(evaluation)
        v2 = self._a2.value(evaluation)
        return v1 // v2


class Modulo(ABiOp):
    def __init__(self, a1, a2):
        super(Modulo, self).__init__(a1, a2)
        self.symbol = '%'

    def value(self, evaluation):
        v1 = self._a1.value(evaluation)
        v2 = self._a2.value(evaluation)
        return v1 % v2


class Power(ABiOp):
    def __init__(self, a1, a2):
        super(Power, self).__init__(a1, a2)
        self.symbol = '**'

    def value(self, evaluation):
        v1 = self._a1.value(evaluation)
        v2 = self._a2.value(evaluation)
        return v1 ** v2
@@ -248,16 +248,142 @@
 yError:%0A
+            pass%0A%0A        try:%0A            if self._value%5B0%5D.isupper():%0A                return None%0A        except TypeError:%0A
         
@@ -405,16 +405,16 @@
 ._value%0A
-
 %0A%0Aclass 
@@ -612,16 +612,168 @@
  + ')'%0A%0A
+    def value(self, evaluation):%0A        v1 = self._a1.value(evaluation)%0A        v2 = self._a2.value(evaluation)%0A        return self.operation(v1, v2)%0A%0A
 %0Aclass A
@@ -906,112 +906,32 @@
 def 
-value(self, evaluation):%0A        v1 = self._a1.value(evaluation)%0A        v2 = self._a2.value(evaluation)
+operation(self, v1, v2):
 %0A   
@@ -1099,112 +1099,32 @@
 def 
-value(self, evaluation):%0A        v1 = self._a1.value(evaluation)%0A        v2 = self._a2.value(evaluation)
+operation(self, v1, v2):
 %0A   
@@ -1284,112 +1284,32 @@
 def 
-value(self, evaluation):%0A        v1 = self._a1.value(evaluation)%0A        v2 = self._a2.value(evaluation)
+operation(self, v1, v2):
 %0A   
@@ -1471,112 +1471,32 @@
 def 
-value(self, evaluation):%0A        v1 = self._a1.value(evaluation)%0A        v2 = self._a2.value(evaluation)
+operation(self, v1, v2):
 %0A   
@@ -1691,112 +1691,32 @@
 def 
-value(self, evaluation):%0A        v1 = self._a1.value(evaluation)%0A        v2 = self._a2.value(evaluation)
+operation(self, v1, v2):
 %0A   
@@ -1875,112 +1875,32 @@
 def 
-value(self, evaluation):%0A        v1 = self._a1.value(evaluation)%0A        v2 = self._a2.value(evaluation)
+operation(self, v1, v2):
 %0A   
@@ -2057,112 +2057,32 @@
 def 
-value(self, evaluation):%0A        v1 = self._a1.value(evaluation)%0A        v2 = self._a2.value(evaluation)
+operation(self, v1, v2):
 %0A   

Make superclass call operations + correction