Intro Think like a architecture Data Layer Data Sources Repository Classes Handling Multiple Data Sources in a Repository Immutability Threading Errors Multiple levels of repositories Testing