some improvements not done yet