abstracted some code into protected functions
Merge branch 'release/1.1.6'