Replaced Superagent with Request, Added proper exception class, reorg files into proper module.