implement shadow2