finish demo version
add basic test