Lots of improvements, still need more two days to finish