some imporvements