final before refactor and styling