added linear equation solver