Change listeners to make them aware of the current pass
Change protected properties to private
Add missing file headers
Add functional tests