without redundance
orz