criterion classes added, can compile, untested