Pitch, Yaw, and Moving a Camera

Hello,

I'm having some trouble with making my camera move while maintaining its ability to pitch and yaw. I have it working at the origin, but I can't seem to figure out how to make it work when I start moving around. When I rotate the camera with my mouse, it works no matter where I am in the world. I guess my issue is that when I translate my camera with the WASD keys, there's always a fixed point that my camera automatically rotates to see. In my case, the starting position is (1,0,-1). So no matter which way I translate the camera, it always stares at this point. However, once I stop moving and rotate my camera with the mouse, two problems arise: 1) the camera doesn't smooth rotate at the start--it jerks to view the position where the camera was staring BEFORE the translate; 2) like the first problem, when I translate after a rotation, the camera automatically rotates to view the last position the camera was located. I understand why 2) is happening, but don't know how to fix it! Here's the code:

The mouse functions are registered in main properly. And the program has the same behavior with out without saveLook the way I have it. It's just a recent addition I made in the debugging process which had no effect. I've also tried adding the value of the translate to the look vector (forward/backward add to look.z, left/right add to look.x), but that gives me some pretty strange behavior as well.

Any help related to how to make my translates not rotate the camera to where it was previously staring, but rather to keep staring the way it was pointing at the end of a rotate would be greatly appreciated