it could be a separate object for the java api only, containing the factory methods only