function in cpp must not be inline to be usable