cleaner shadow implementation