temp commit (#20)

Temp commit,
the code is unstable must be checked before #20 release