add some modes, little refinements