Working version of shell preconditioner for diagonal preconditioner, more sophisticated preconditioners to come