Implementation coming along, move all code to headers