added GPL3 headers