add different modes
add modes