                                 n = point.get_m_normalWorldOnB()
                                 if b1 == p
                                     normal = vec3.new n.x(), n.y(), n.z()
+                                    other = pointer_to_body[b0]
                                     ret.push {point_on_body: b, \
-                                        point_on_other: a, normal}
+                                        point_on_other: a, normal, other}
                                 else
                                     normal = vec3.new -n.x(), -n.y(), -n.z()
+                                    other = pointer_to_body[b1]
                                     ret.push {point_on_body: a, \
-                                        point_on_other: b, normal}
+                                        point_on_other: b, normal, other}
         return ret
 
     _clone_to: (owner) ->

        rbInfo.set_m_restitution elasticity
        body =  new Ammo.btRigidBody rbInfo
        body.pointers = [rbInfo, myMotionState, startTransform, localInertia]
        @world.pointer_to_body[body.ptr] = body
        return body

    _character_body: (shape, position, rotation, step_height, axis, gravity,

                @set_linear_factor @linear_factor
                @set_angular_factor {x: 0, y:0, z:0}
                @world.auto_update_bodies.push @
            when 'STATIC'
                # TODO: use ghost?
                @btbody = @_rigid_body 0, actual_shape, pos, rot, @friction,
                    @elasticity, 0
            when 'SENSOR'
                @btbody = @_sensor_body actual_shape, pos, rot
            when 'CHARACTER'
                @owner.rotation_order = 'Q'
                quat.copy @owner.rotation, rot
