Added 4 headers and removed public from interface as per pollice's recommendations
Added the rest of the missing headers