rewriten API for special events

use Map instead of HashMap