Make Expression polymorphic, foldable