added back external and shared