app abstraction library