use compile time type