too much modifications to implement mutability and pass test !