Use protocol instead of concrete
Repository pubsub protocol
Wire up delegates from outside
Tidy AppDelegate a bit