remove logging from core, use promises