Introduce RegisterSignature and RegisterFactory