improve delegate implementation