add factory facade