Excellent advice above. I've trained myself to not think of "Sit" (or other commands) as one skill, instead I see it as a group of skills, where "sit-at-home","sit-in-well-known-street","sit-in-crazy-distracting-harbour" is different skills and the level of competence in each needs to be trained separately, sometimes it's almost like starting all over again. No idea if this represents the dogs mental model, but it keeps my own expectations lower (and therefore frustration) and reminds me to actually do training in different settings.