large refactor + added mrjob