It does not matter which order atoms are given to ClusterGraph. They are rearranged so the most similar combination of decorators is put into the same atom. In SMIRNOFF, when a SMIRKS pattern is matched to a molecule it doesn't matter which atom is tagged with which number. In a bond parameter it does not matter which atom is tagged as :1 or :2 because the parameter is assigned to the bond between those atoms. For example, if we wanted a parameter for a carbon-nitrogen single bond we could right "[#6:1]-[#7:2]" or "[#7:1]-[#6:2]" and the parameter would be assigned to the same bond. Therefore, we want a SMIRKS which aligns fragments so the most similar atoms are combined into the same node. To accomplish this we compare the SMIRKS decorators for incoming atoms with those already stored in the graph. In the ethanol/propene example, the carbon-carbon bond in ethanol is added first making the SMIRKS pattern "[#6H3X4x0!r+0A:1]-;!@[#6H2X4x0!r+0A:2]." Then, the decorators for the two carbons in propene "[#6H3X4x0!r+0A:1]" and "[#6H1X3x0!r+0A:1]" are considered. Since the first atom agrees more closely with atom :1 the propene atoms are added in order. However, if the user provided the atoms backwards ((1,0) instead of (0,1)) then we would invert the sub-graph so the atoms are added to the node they most closely align with. This process iterates over the layers of untagged atoms as well to make sure they align in a logical fashion.