restructure. pass 2