Fixes #1055 * make classes and methods package private #1055 * changed nested class to public * made Element<T> private and its constructor package-private