p36 37 38 impls and tests