I didn't read all of your responses so I'm sorry if this is a repeat. Nobody can stay calm and firm all the time, so don't go for perfection. I did read a couple of responses that suggested that you go in another room and calm down and then deal with the problem. I'd like to tweak that advice a bit. Send the child who is disobedient into the bathroom (or another not fun place to be). If you disappear, then the child gets to continue playing. At three years old, by the time you return, the offense will long be forgotten. If, however, they have to go sit on the bathroom floor until you are calm and have thought about what the consequences of their actions will be, then they don't get to play. It is also uncomfortable to have to wait for a consequence. (This idea is also found in Love and Logic.) Because I have three children, I don't use corners or time out spots where the other two can see the child in trouble. This causes more problems for me personally because the kid in trouble may throw a fit or "show off" to the other two. I use this bathroom time when I am busy with other children or when I know I'm too angry to deal with things. When I know I am totally calm and have a plan, then I go into the bathroom where the child is waiting and talk (not in front of the other children). This has helped me tremendously to not react in anger. When a child is disobedient, I just say, "Go to the bathroom and wait for me." I had to learn to not give in. Once I said, "Go" I couldn't allow the child to start doing what they were supposed to be doing (clean up a mess, etc). I had to learn to follow through.
The other thing that really has helped our household run more smoothly is having a schedule. We always clean up their toys before lunch and before bathtime. The school age kids always have to do homework before they can play. My two year old and I have a weekly schedule (for example, Wednesday mornings are library, Thursdays are store, Fridays are playgroup etc) and we also have a daily schedule. We play, eat, clean up, go somewhere at just about the same time just about every day. I am not too strict on this; it just works out better for everyone. Kids love knowing what is coming next and exactly what is expected of them when.
Sometimes, when things get really frustrating, I have the child repeat back what I just told them to do. "Please go put these folded shirts in your drawer and then come tell me when you are done. What did I just tell you to do?" If he/she doesn't repeat back both steps, I tell them again and they can try to repeat it back again until they get it. We used this (including the come back and tell me when you are done) a lot when we started really worked on first time obedience. Now, when we tell our kids something to do, we have taught them to say, "Yes, mom or Yes, dad." Somebody suggested this to us and we thought it sounded so cheesy, but it works! Somehow, when they acknowledge that they have heard their instructions with a yes mom, they go and do it. We occasionally have to remind them to say "yes, mom or dad" but now it is such a normal part of receiving instuction, it seems like the most natural thing to do.
I hope this helps. Parenting is such a tough and important job. You are doing great! Keep loving on those kids and don't be afraid to correct their behavior. The patterns you establish now are the ones you will have their entire childhood, including those teen years!
Take care,
T.