modularize more features