protected String _render(String tpl) {

		recursion ++ ;

		if ( recursion > MAX_RECURSIVITY ) {
			throw new UnsupportedOperationException("Maximum recursivity reached") ;
		}

		int len = tpl.length(), i;
		String result = "", tag = null;
		char character;

		for (i = 0; i < len; i++) {

			character = tpl.charAt(i);

			// We're in a sub pattern, continue reading it
			if (tag != null) {

				// Ends a sub part
				if (character == '%' && tpl.charAt(i + 1) == '>') {
					result += this.renderTag(tag);
					tag = null;
					i++;
					continue;
				}

				tag += character;

				// We're reading normal text
			} else {

				// Start a sub part
				if (character == '<' && tpl.charAt(i + 1) == '%') {

					tag = "";
					i++;
					continue;
				}

				result += character;
			}
		}


		recursion -- ;

		return result;
	}