Modularize, add thunder