modified, tests added