implement delegate pattern