improve speed
add tests runner