add refact modularity