reasons for separation: * they have different requirements * execute need local attribute, global attribute(appDatabase) that waitUntil doesn't need * the appDatabase will need a special error handling which waitUntil doens't need