better structure for random