Consistent use of friend factory functions and re-ordered declarations to enable this.