nice! the delegate pattern is a good practice here.