function nsalias {
	typeset -i i=0

	case $# in
	0|1)
		while (( i < ${#NSCMDNS[@]} ))
		do
			[[ ( -z $1 ) || ( ${NSCMDNS[i]} = $1 ) ]] \
				&& print -c "${NSCMDNS[i]}\t${NSCMDFN[i]}\t${NSCMDSH[i]}"
			let i++
		done
		;;
	2)
		while [[ $i -lt ${#NSCMDNS[@]} &&  ( ${NSCMDNS[i]} != $1 || ${NSCMDFN[i]} != $2 ) ]]
		do
			let i++
		done
		(( i == ${#NSCMDNS[@]} )) && return 1
		eval "${NSCMDSH[i]}"
		;;
	3)
		(( $# != 3 )) && return 64
		NSCMDNS[${#NSCMDNS[@]}]=$1
		NSCMDFN[${#NSCMDFN[@]}]=$2
		NSCMDSH[${#NSCMDSH[@]}]=$3
		! alias $1 >/dev/null && alias $1="nsalias $1"
		;;
	*)
		return 64
		;;
	esac
}
