implemented factories methods