added a lot of functions.... again