I didn't write this - but I DID adapt it from Clive Barker's Abarat.
Which you should read 'cause it's great.