First pass at the app foundation