Create factory classes and improvements in the API.