reimplement my last set of changes