Note: The type signature of smex::encode and smex::decode has changed, but will still accept values that were previously passed in.