use keymodel as much as possible