fix bugs, add slot/slots, rewrite shadow