random todo
changed gen.callback