break apart logic