Split out language sources and persistence layer