What we really should have is a real OO model so that these things gets added through inheritance. What we need for that is the ability to return a different object from create (to be backward compatible). E.g. Sql.Sql is both the database type and the database factory.
This would also allow for unique objects, which has been requested several times.
private TheOne neo; class TheOne {
TheOne create() { if(neo) return neo; neo = this_object; } }