use nice modern delegate pattern instead of old clunky version
much faster and will be recognizable to modern iOS programmers