add abstract repos and in-memory repos

no tests yet