working on collison, generation, etc