#206 divide into small methods