modified graphutil