fix multiple definition bug