1) introduced API
2) moved factories into single wrapper accessible via API
3) updated visibility of factories to internal