switched callbacks to Q promises, broke up some modules