app skeleton + model