refactor to single super invocation