Software may contain functionality that does not align with its architecture. Such cross-cutting concerns do not exist from the beginning but emerge over time. By analysing where developers add code to a program, our history-based mining identifies cross-cutting concerns in a two-step process. First, we mine CVS archives for sets of methods where a call to a specific single method was added. In a second step, such simple cross-cutting concerns are combined to complex cross-cutting concerns. To compute these efficiently, we apply formal concept analysis---an algebraic theory. History-based mining scales well: we are the first to report aspects mined from an industrial-sized project like ECLIPSE. For example, we identified a locking concern that crosscuts 1284 methods.