update

constructer smart initialize