fix bug  + add functions