updated parameters to include self reference