abstract smoother transition