Why construct from a String instead of from a UUID?  It's minor, but it seems odd to force every instance of TempBlockId construction to call toString on a UUID instead of doing it once here.