first pass at an apps architecture