matrix splitting now functional