some restructure, added convolution, matrix manipulation and cabal-install