Break out implementation

Merged latest changes to 1.x into the break_out_implementation branch.