Many changes, add log4j