inlines and statics added so it can be included from many implimentation files