almost finished
almost finished 0.1 version