move the definitions to the headers