Minor architecture changes. Added new ListenerOption shape.
Use custom type for params.