refactor and need to be consistent