added a lot of header stuff