make methods public facilitate overriding and test
java 8 generics