update
simplify strcuture