Added functional description, to be revised