fix #18; improve UT