swapped world ref, added cpp to avoid circular includes
update2