refactor, todo updated