refactor models and add partial collisions support