updated
First finished version, now can start to use