proper h/cpp separation