path.Clean is redundant, path.Join will do that anyway