further clean up.
add test