implemented further functions