Rev 2. - almost compleat