You understand the request. You know what the final output must be. You've piled all the building supplies onto your workbench. Now what? One of the most critical steps in the construction of any solution is figuring out how to model the domain. The stakes are pretty high. A good model can make the work natural and easy and the product safe to use. A bad model will fight you every step of the way and collapse when stressed. In this installment from How to Train Your Scrappy Programmer, we will explore various data types and the impact each has on the resulting code. Stops include: The under loved data structure: sets Elixir's flexible ranges Identifying entities and value objects The advantages of binary math Erlang's mutable data store And more! By the end of this interactive guide, you will have more tools in your belt to assemble whatever structure is needed in the moment. You'll shift your thinking from integers and strings into the elements of the problem domain reified in code.