added Random and Single support