added PKEvent
refactored PKEvent