[JSF] - Velho "problema" de reexecução

Galera boa tarde.
Pesquisei bastante, li uns artigos, e a verdade é que não consegui fazer funcionar uma parada, segue:

resumo do que interessa da página esbocoRede.jsp

<script>
function executa(){
	switch(tipoEdicao){
		case 1:{
			maisPonto(coordX,coordY,"ponto_"+numPontos);
		}
				
		case 2:{
			maisLinha(coordX,coordY,"linha_"+numLinhas);
		}
	}
}
</script>

<h:form>
	<a4j:jsFunction ajaxSingle="true" name="maisLinha" action="#{esbocoRede.maisLinha}">
		<a4j:actionparam name="param1" assignTo="#{esbocoRede.linha.coordX}" />
		<a4j:actionparam name="param2" assignTo="#{esbocoRede.linha.coordY}" />
		<a4j:actionparam name="param3" assignTo="#{esbocoRede.linha.id}" />
                <a4j:actionparam name="param4" value="0" assignTo="#{esbocoRede.linha.coordZ}" />
		
	</a4j:jsFunction>
	
	<a4j:jsFunction ajaxSingle="true" name="maisPonto" action="#{esbocoRede.maisPonto}">
		<a4j:actionparam name="param1" assignTo="#{esbocoRede.ponto.coordX}" />
		<a4j:actionparam name="param2" assignTo="#{esbocoRede.ponto.coordY}" />
		<a4j:actionparam name="param3" assignTo="#{esbocoRede.ponto.id}" />
                <a4j:actionparam name="param4" value="0" assignTo="#{esbocoRede.ponto.coordZ}" />
	</a4j:jsFunction>
</h:form>

resumo do que interessa da classe EsbocoRede.java

public EsbocoRede(){
		this.ponto = new TipoPonto();
		this.linha = new TipoPonto();
		this.pontos = new ArrayList<TipoPonto>();
		this.linhas = new ArrayList<TipoPonto>();
	}
	
	public void maisPonto(){
		this.pontos.add(ponto);
	}
	
	public void maisLinha(){
		this.linhas.add(linha);
	}

        public ArrayList<TipoPonto> getPontos(){
		return this.pontos;
	}

	public TipoPonto getPonto() {
		return ponto;
	}

	public void setPonto(TipoPonto ponto) {
		this.ponto = ponto;
	}

	public int getNumPontos() {
		return this.pontos.size();
	}

	public TipoPonto getLinha() {
		return linha;
	}

	public void setLinha(TipoPonto linha) {
		this.linha = linha;
	}

Meu objetivo com esse código, é poder inserir Pontos e Linhas(composto por 2 ou mais pontos) nos seus respectivos arrays
A cada clique no mapa, eu crio um novo ponto na coordenada, ou então, eu desenho uma linha.
Após o desenho do ponto ou da linha, quero incrementar meu array de pontos/linhas, para posteriormente salvar tudo.

O problema é que ao clicar em maisPonto(), ele chama o método maisLinha(), e de uma forma desordenada, além de chamar 2x ou não, algum método

Por gentileza, qual o procedimento correto? Já tentei, li alguns links já postados aqui no fórum, porém não consegui resolver meu caso, sendo que só consegui enxergar essa forma de o fazer.