added algorithm description