Lots of stuff added. Nothing is quite done, except diagonalizer.py