rebased on commons/4.2.1 and data/4.1.8