add gitignore file
add test for catching bug2
add new test; seems no bug found
add new test and found bug 3 and 5
add a test. seems no bug found
add test. found all bugs
use immutable instead of mutable