run dependent tasks only once