Almost done. Need to persist the total size of repo (rather than keep it in a field) and write some tests