Straight port of CollisionAlgorithm and child classes to scala
Becouse I could ;p