refactor shadow access to be explicit