lesson 1 - This needs a major refactor