Refactor & modularize; update to log4j2