implemented collisions, still need to sort out dispatch