tested, works quite well