hiding TaskFactory from public API and moving it to impl. package