three functions done