added random generation