refactor 4,5,11,12; add 14-17