Part 1, upgrading to require