add 2 and 3 states feature