A bit nicer way of handling collision callbacks
A lot of small changes