Implemented using Guava libs