.icon-mixins(){

    .ivx-icon{
      display: inline-block;
    }

    .genIcons(@icons, @font){
        .iter(length(@icons));
        .iter(@i) when (@i > 0) {
            .iter(@i - 1);
            @details: extract(@icons, @i);
            .genIconClasses(@font, @details);
        }
    }

    .genIconClasses(@font, @details) when (length(@details) = 3){
      @type: extract(@details, 1);
      @content: extract(@details, 2);
      @custom: extract(@details, 3);
      .ivx-icon.ivx-icon-@{type}{
        &:before{
          font-family: @font;
          font-style: normal;
          @custom();
          content : @content
        }
      }
    }

    .genIconClasses(@font, @details) when not (length(@details) = 3){
        @type: extract(@details, 1);
        @content: extract(@details, 2);
        .ivx-icon.ivx-icon-@{type}{
          &:before{
            font-family: @font;
            font-style: normal;
            content : @content
          }
        }
    }
}
