Perhaps if charges for the provided molecules are provided, we can cache those and use them instead? How would we mix user and generated charges in the cache?