reflection with variable depth