compile time selection