changed experiment libraries to be able to be more general. Most classes now have factories to generate them