think its working, tested the usual cases - but further testing is
welcome