Add more algorithm
Add unittest