Working solution

Every use case implemented except for data persistence.