deprecation removed
removed warnings and added @Override annotations
test fixed to work with java 8
default, final and abstract classes changed to allow interface
verification