oops this onea ctually does all of that