implementing more functions