additional functions implemented