more modular, less buggy