using location is optional