org.cvogt.scala.constraint
fails compilation if T is not a singleton object class meaning this can be used as an implicit to check