added collision observer, taking custom callback functions