I believe print quality can be tremendously improved (it is already quite nice) with a dynamic layer thickness algorithm. If implemented correctly, it would make the tops and bottoms of curves look much closer to the quality we see on the sides of objects, without having to draw an entire object with ultra fine layers.
It would work like this: the slicer examines the slope of the model surface at each point and computes the local layer thickness as a function of local slope.
Thus, when printing a ball, for instance, the bottom and top of the ball may have 0.1 mm thickness layers, while the center may have 0.3. The user would define a maximum thickness (e.g. 0.3mm), a minimum (0.1mm) and the software would use some algorithm to interpolate. As a simple example, we could start with a sine function with the angle measured as degrees from vertical:
Layer thickness = sin(angle) * (max-min) + min.
For a more complicated shape, like for example a thumbs up, each z-height would be drawn with variable thickness. The center of the thumb would be drawn at the same z-height as the top of the curled index finger. But the side of the thumb is a vertical wall and would look fine with thick layers, but the top of the curled index finger is nearly horizontal and would benefit from thinner layers. So the extruder would extrude one 0.3 mm layer around the thumb, and then draw three 0.1mm layers on the index finger before going back to the thumb and drawing another 0.3mm layer.