better error checking
if shadow is a boolean choose an appropriate shadow offset
error checking