broke up into more methods