Sometimes they work in very similar ways and sometimes they're very different in how they end up working. Maybe this calls for a base class they extend at some point, I'm not sure.