mostly works... see tests()