add behavioud callbacks and their unit tests