many changes, much improve