made id and location optional