restructure. no functional changes