use reflection utils and ensure methods are marked accessible
check class hierarchy the right way around
bunch of util changes and fixes