add template and iterator. not test yet
add test. fixed some problems
add some helper functions
add constructs, operator=, foreach
add const iterator
add for_adjacent