split out random gen + minor interface tweaks