This reverts commits - 476be3746e - 8d50a3e19e - 08dbc4f996 (partially).
476be3746e
8d50a3e19e
08dbc4f996