swapped event callbacks to a receiver interface