introduced the serializer pattern and improved the smooth_operator base class