Add tests
Refactor persistent data store

Add a service layer instead of talking directly to storage