the self entity shared_ptr is now pushed on as a global named "entity" to prevent name issues