a few modification