Here's some tips that worked for me:
1. Pick your battles wisely--keep them few, but they can change once old, poor behaviors are dropped. Stay strong on your rules. On those important items be sure to follow up on stated results (discipline) of not following the rules. NEVER give in on the important ones, EVER. If you say you'll throw out toys if they've left on the stairs, definitely DO IT. If you say that throwing food is cause for early bedtime, DO IT.
2. Don't engage in back-and-forth arguments on rules you believe should be enforced. State your case and stick to it, no matter what. Refuse to listen to them crying, whining or arguing their case. You're the parent/caretaker -- make and enforce the rules, period. Yes, you are the boss of them--make it clear.
3. When your child is acting their worst, remove them or yourself from the environment. For some kids trying out their strength (misbehaving) in your relationship, ANY attention is good attention. If you ignore the poor behavior, it may go away. ex. #1) Your child throws food? Never take them to a restaurant until they get the message. #2) Your child demands toys/candy when shopping? Don't take them shopping at all until an agreement has been reached before going in again. The moment they break your rule and you both walk immediately out of the store, they'll get the message. Discuss the rules before actually walking into this store again. #3) If your child won't go to bed on your schedule, don't talk to them when they come out to find you. Simply pick them up, walk them back to bed, don't say a word, and return to your activity. This'll make make you crazy the first few days, but eventually it does work. Remember to NOT argue, don't tell them to go to bed, just return them to their bed, and don't engage with them.