each logical component of a library should have:
smol brain: one file to represent it
big brain: one interface file and one implementation file to represent it
huge brain: one interface file, one type generic implementation file and one type specific implementation file to represent it
galaxy brain: one interface file, one type generic implementation file, one type specific inline implementation file, and one compilation unit file to rule them all, find them all, bring them all and in the darkness bind them all.