Wiring in shadow extraction

WIP: @markhibberd 
Should we add this as a function on `ShadowOutputDataset` or something like that?