Different models in your Rails application will often share a set of cross-cutting concerns. In Basecamp, we have almost forty such concerns with names like Trashable, Searchable, Visible, Movable, Taggable. These concerns encapsulate both data access and domain logic about a certain slice of responsibility. Here’s a simplified version of the taggable concern: module Taggable extend ActiveSupport:
![Put chubby models on a diet with concerns](https://cdn-ak-scissors.b.st-hatena.com/image/square/619dd1e0581f967f0d768dc61be406d4d346332a/height=288;version=1;width=512/https%3A%2F%2Fs3.amazonaws.com%2F37assets%2Fsvn%2F1053-DHH.jpg)