add engage and terminate program methods, tidy