make it only run when we need it