diff --git a/src/SystemIdentification.jl b/src/SystemIdentification.jl
index 0264d4f597e0854938e11e08858704ff4a323672..a484b8e91131ad8bcb8e9f29f15545f879203281 100644
--- a/src/SystemIdentification.jl
+++ b/src/SystemIdentification.jl
@@ -24,8 +24,9 @@ abstract Model
 abstract LinearModel <: Model
 abstract NonLinearModel <: Model
 abstract Network <: NonLinearModel
-typealias Polynom{T<:Real} Union(T, Array{T,1})
-typealias PolynomMatrix{T<:Real} Union(Array{Polynom,1},Polynom)
+typealias Polynom{T<:Real} Array{T,1}
+typealias PolynomMatrix Array{Polynom,1}
+
 
 
 """
diff --git a/src/armax.jl b/src/armax.jl
index 7f1e97b519732bfda440dfe0ab0975a11f3f91dc..9c2775110ffa60707076d5167261d61e7af98baa 100644
--- a/src/armax.jl
+++ b/src/armax.jl
@@ -5,7 +5,7 @@ function ar(y::Vector{Float64}, na; λ = 0, bias=false)
     if λ == 0
         w = A\y_train
     else
-        w = (A'A + λeye(na+1))\A'y_train
+        w = (A'A + λeye(size(A,2)))\A'y_train
     end
     prediction = A*w
     error = y_train - prediction
@@ -23,11 +23,20 @@ function arx(y::Vector{Float64}, u::VecOrMat{Float64}, na, nb; λ = 0, doplot=fa
     if λ == 0
         w = A\y_train
     else
-        w = (A'A + λeye(na+1))\A'y_train
+        w = (A'A + λeye(size(A,2)))\A'y_train
     end
     prediction = A*w
     error = y_train - prediction
-    model = AR(w,na,bias,λ)
+
+
+    si = na+1
+    b = Polynom[Polynom(w[si:si+nb[1]-1])]
+    si += nb[1]
+    for i = 2:length(nb)
+        push!(b,Polynom(w[si:si+nb[i]-1]))
+        si += nb[i]
+    end
+    model = ARX(w,na,nb,bias,λ)
     na = bias ? na+1:na
     result = FitResult(y_train,prediction,na, λ>0?(:LS_reg) :(:LS))
     return model, result
@@ -49,20 +58,20 @@ getARregressor(iddata::IdData, na, bias=false) = getARXregressor(iddata.y, na, b
 
 function getARXregressor(y::Vector{Float64},u::VecOrMat{Float64}, na, nb; bias=false)
     assert(length(nb) == size(u,2))
-    @show m = max(na+1,maximum(nb))
-    @show n = length(y) - m+1
-    @show offs = m-na-1
-    @show A = toeplitz(y[offs+na+1:n+na+offs],y[offs+na+1:-1:1])
-    @show y = copy(A[:,1])
-    @show A = A[:,2:end]
+    m = max(na+1,maximum(nb))
+    n = length(y) - m+1
+    offs = m-na-1
+    A = toeplitz(y[offs+na+1:n+na+offs],y[offs+na+1:-1:1])
+    y = copy(A[:,1])
+    A = A[:,2:end]
 
     for i = 1:length(nb)
-        @show offs = m-nb[i]
+        offs = m-nb[i]
         A = [A toeplitz(u[nb[i]+offs:n+nb[i]+offs-1,i],u[nb[i]+offs:-1:1+offs,i])]
     end
 
     if bias
-        @show A = [A ones(n)]
+        A = [A ones(n)]
     end
     return y,A
 end