with shadowing