finished ribbon implementation