Merge pull request #12 from hsyed/cherry-pick-ap-refactor

cherry pick changes and fixes from annotation-processing-branch