Fix: proper delegate cleanup