New test interface

Should maybe be `private[testing]`.