App framework (v1)