functions finish 99%