inner class need to be public to be accessible by reflection. also added keyEvent
basic element requirements
needs to be public
needs to be public