Given triangle soup, this project implements the directed-edge data structure that allows checking if the input is a manifold, and calculates its genus. A mesh is constructed by adhering do the directed-edge data structure specification. If there are multiple meshes in the same file, their connectivity is checked and multiple sub-meshes are created by traversing each one using breadth-first search.