dynamic book generator