implemented classes that wrap both faces/surfaces and edges/curves depending on input geometry and made topology graph generation methods work with those classes so this work could be applied even when only using surfaces instead of faces/edges