add dagger principle