It's worth noting, however, that not everyone agrees with this approach. DHH thinks that it's clearer to use concerns and callbacks than service objects in most cases. Worth watching his "Writing Software Well" video series (https://www.youtube.com/watch?v=m1jOWu7woKM) for an alternative perspective where you can look at some real, production Basecamp code and see how his viewpoint looks in practice.