Refactoring for public api - Do not Merge