Task runner framework