update with some modifications