make delegates optional