add utils
add util, improve source code, add simple assertion
introduce immutable map
add binary heap
update todo