So much refactor