bring back location, basename and extension, they are computed, why not share them