add variant syncing, cache, simpler DI,