edit unit testing.
added new classes & enum.
new code style
update.
new algorithm
new classes.
update