implemented shadow