Split the interface and implementation, so adding debugging information in the code will not trigger full rebuild.