move private methods below