oops needs restructure