adding collision mixin and necessary reworks to support it