Fix bugs
Add tests