We now grant low-level access to the energy calculation, but without exposing the implementation details. These methods are all completely reentrant and can thus be used in a multi-threaded environment.