improve modularity