project setup
core protocols
[presenter] default presenter view controller implementation