shadowing implementation