Added separable convolution and code cleanup