template? or ifdef?