make it self contained