fix typing
add emitter.ml
passed tests