add factory's method
add factory
conflict fixed