some improvemments