tried to have better randomness