some thoughts on architecture of the app