Keeping data and logic separately via Eternal Storage

Task 3

This pattern follows the same approach as the previous one, the only difference being that the storage contract is implemented in a specific way, with mappings, carry out all of the exercises from the previous task but implement the storage contract with mapping of each type.

You don't have to take into account different sizes for storage such uint8, uint16 and so on, uint will suffice for now but if you wish, you can.