refactor and add to do list