add open callback