tried putting random in an impl, maybe now it will behave properly