Monoids
Combine several components together of type A to generate a "network" or "topology" of type B
You start with a bunch of things, and some way of combining them two at a time.
1. (Closure): The result of combining two things is always another one of the things.
2. (Associativity): When combining more than two things, which combination you do first doesn't matter
3. (Identity element): There is a special thing called "zero" such that when you combine any thing with "zero" you get the original thing back.