Add some more tests and improve solutions