some details rewrited