Changed to Shared and Callback implementation