Upgraded to guava 16
refactoring: extracted listeners and callbacks to inner classes