add guava
add factory-method