yeap, it's done.
add tests