refactoring
add Topology