use typedmap
add a todo test