- improve functions