modular functions update