changed the Specification traits to abstract classes for better compilation times