Initial implementation.

--HG--
extra : amend_source : eabab863764639774caf42f58faa4c9fc6e50322