implemented functions, need testing