Refactored, move some methods to helper to provide as public interface