The lines
```
+                    not a.__class__.__name__ == 'Basic' and
+                    not a.__class__.__name__ == 'Tuple'):
+                    o = C.Symbol(a.func.__name__.upper())
```
Look really hackish to me. We should not use the `__class__` attributes unless we absolutely have to. There is no way to implement this differently?