a few modification added