expanded topology, added variable func