fully functional, further tests needed