support for three modes