add support for java collection classes
rename some methods and objects for clarity