add test to cover most cases