Aspects include "counting" the objects satisfying certain criteria ("enumerative combinatorics"), deciding when the criteria can be met, and constructing and analyzing objects meeting the criteria (as in "combinatorial designs and matroid theory"), finding "largest", "smallest", or "optimal" objects ("extremal combinatorics" and "combinatorial optimization"), and finding algebraic structures these objects may have ("algebraic combinatorics").