Code-review refactoring:
1) Used Guava for streams copying.
2) Added @Override annotations.
3) Updated logging.