some improovement, some more tests passed