some improvs **