added guava preconditions