Jemplode does all of that nicely, with a tiny bit of configuration.