Lots of nice improvements recently. IMP::ScoreStates are further hidden. Namely, IMP::core::RigidBody constructures the needed score states internally, doing away with the need for the create functions (which have been done away with). In addition there are new decorators IMP::core::Cover and IMP::core::Centroid which manage their respective score states, further doing away with more create methods. The hierarchy-based create mehtod for rigid bodies has been moved to the atom module and is called IMP::atom::rigid_body_setup_hierarchy(). IMP::em::read_map() will figure out the file type to use automatically from the extension. Other such methods should follow suite. A class IMP::core::StructureSet has been added to provide a convenient way to manage solutions of optimization runs. IMP::core::RigidBodyMover now takes its angle argument in radians and is documented as such. IMP::core::ClosePairsScoreState and IMP::core::CloseBipartitePairsScoreState have been replaced by IMP::core::ClosePairContainer andIMP::core::CloseBipartitePairContainer. The score states have been marked as deprecated and are mostly still there, but are more limited than they were. IMP::core::AllPairsPairContainer has been renamed to IMP::core::AllPairContainer and a bipartite version has been added. All containers now keep track of what they looked like on the previous time step. The IMP::core::ListPairContainer and IMP::core::ListSingletonContainer have had their interface reduced a bit in order to make implementing change tracking easier. The set of exceptions has been simplified to go along with simplification of the checks. We now have IMP::InternalException and IMP::UsageException which are thrown by the respective checks (and the former is thrown by IMP_FAILURE()). When you want to to pass an exception back to python use one ofIMP::ValueException or IMP::IndexException or IMP::IOException. There is also a new macro, IMP_THROW() to be used when you want to throw an exception with a nice error message. Please look at code you have worked on and make sure that the exceptions make sense given the new clarifications. An IMP::ModelException is now thrown when IMP::Particle attributes attain invalid values. This exception can be caught to recover from failures ofIMP::core::ConjugateGradients or difficult restraints. The set of functions needed to get meta information about IMP::Restraint and IMP::ScoreState objects has hopefully stabilized. Sorry about the thrashing. If you have restraints or score states not in SVN, see the corresponding IMP_RESTRAINT() type macros, the IMP::Interaction class and base classes for what exactly you need to implement.