edited introduction by adding some definitions