avoid direct use of app object