**************************************************************** „Weeds„ Super Bad Ass Keyboard and Mouse Setup for Day of Defeat **************************************************************** I use my keyboard and my mouse simultaneously when I play any FPS PC game (DOOM, Duke Nukem 3D, Heretic, Hexen, Quake, Unreal, etc...), as most other players do for these types of games. Where I differ from the other players is exactly *HOW* I use my keyboard and my mouse in these games. I control the mouse with my right hand; with the left mouse button (right index finger) configured for "move forward" within the game, the middle mouse button (also my right index finger) configured for "move backward", the right mouse button (right middle finger) configured for "look strafe on", and my left hand controlling the QWERTY and SPACEBAR keys on my keyboard. I rest my little finger on the "Q" key for "jump", my ring finger on the "W" key for "crouch", my middle finger on the "E" key to disable mouse "aim" and "look", my index finger on the "R" key for "fire weapon", and my thumb on the SPACEBAR to run or "sprint", or to open doors and push buttons or light switches (if the game supports these features). I then use the "E" key to temporarily disable mouse "aim" and "look" (and enable "look spring") when needed. This allows me to normally use the mouse "X" and "Y" axes for precise movement where required (balancing on a beam, walking on a narrow bridge, etc...), as well as using the left mouse button for forward motion (sliding the mouse left and right to turn towards the left and right while running, or simultaneously pressing the right mouse button to strafe while running), and the middle mouse button for backward motion. I disable mouse "aim" and "look" only when I do not require them. The following keyboard and mouse setup for Day of Defeat was adapted from my older Duke Nukem 3D and Unreal controller setups that I have used for years, and can easily be adapted to virtually *ANY* FPS PC game. Legend ====== Action (System Console Command / Notes) -------- Key -------------- Alternate Key Left Mouse Button (MOUSE1) --------------------- Middle Mouse Button (MOUSE3) ------------------- Right Mouse Button (MOUSE2) -------------------- Mouse Wheel Up (MWHEELUP) ---------------------- Mouse Wheel Down (MWHEELDOWN) ------------------ Left Hand Keys #1 ================= Jump / Crouched Jump (+jump;+duck / *01) ------- Q Crouch (+duck) --------------------------------- W Mouse Aiming and Look (+mlook / *02) ----------- E Primary Fire (+attack) ------------------------- R ---------------- / Secondary Fire (+attack2) ---------------------- T Reload Weapon (+reload) ------------------------ Y Run (+speed) ----------------------------------- Flame Thrower / Jihad (*03) -------------------- Left Hand Keys #2 ================= Swim Up / Freelook Move Up (+moveup) ----------- A Swim Down / Freelook Move Down (+movedown) ----- S Flashlight (impulse 100) ----------------------- D Prone Position (prone) ------------------------- F Spray Logo (impulse 201) ----------------------- G Left Hand Keys #3 ================= Display In-Game Menu (+commandmenu) ------------ Z Chat Message: Team (messagemode2) -------------- X Chat Message: All (messagemode) ---------------- C Voice Commands Menu 1 (voice_menu1) ------------ V Voice Commands Menu 2 (voice_menu2) ------------ B Voice Commands Menu 3 (voice_menu3) ------------ N Voice Chat Push-To-Talk Key (+voicerecord) ----- Right Hand Mouse And Movement Keys ================================== Move Forward (+forward) ------------------------ ------------ Move Backward (+back) -------------------------- ------------ Look Strafe On (lookstrafe 1 / *04) ------------ Turn Left (+left) ------------------------------ Turn Right (+right) ---------------------------- Strafe Left (+moveleft) ------------------------ , Strafe Right (+moveright) ---------------------- . Strafe On (+strafe) ---------------------------- Weapon and Inventory Keys ========================= Weapon 1: Manual (slot1 / *05) ----------------- 1 Weapon 2: Handgun (slot2 / *05) ---------------- 2 Weapon 3: Primary (slot3 / *05) ---------------- 3 Weapon 4: none (slot4 / *05) ------------------- 4 Weapon 5: Grenade (slot5 / *05) ---------------- 5 Weapon 6: none (slot6 / *05) ------------------- 6 Weapon 7: none (slot7 / *05) ------------------- 7 Weapon 8: none (slot8 / *05) ------------------- 8 Weapon 9: none (slot9 / *05) ------------------- 9 Weapon 0: none (slot10 / *05) ------------------ 0 Previous Weapon (invprev / *05) ---------------- - ---------------- Next Weapon (invnext / *05) -------------------- = ---------------- Last Weapon Used (lastinv) --------------------- P Drop Primary Weapon (drop) --------------------- Drop Extra Ammo (dropammo) --------------------- \ Drop Item (dropobject) ------------------------- Use Item / Pick Up Grenade (+use) -------------- Map and HUD Keys ================ Cycle Map Views (+map) ------------------------- Zoom Minimap (+mapzoom) ------------------------ Place Map Marker (firemarker / *06) ------------ M Select Previous Map Marker (prevmarker) -------- J Select Next Map Marker (nextmarker) ------------ K Cycle HUD Views (*07) -------------------------- Change HUD Font Size (cl_hudfont 2 / *08) ------ Player Class, Team, Name, and Scores Keys ========================================= Change Weapon Class (changeclass) -------------- [ Change Team (changeteam) ----------------------- ] Change Player Name (name / *09) ---------------- H Kill Player (kill / *10) ----------------------- Display Multiplayer Scores (+showscores) ------- View Keys ========= Keyboard Look On (+klook) ---------------------- Look Up (+lookup) ------------------------------ Look Down (+lookdown) -------------------------- Center View (centerview) ----------------------- HLTV Spectator Mode Keys ======================== Show Spectator Menu (+duck) -------------------- W Change View Modes (+jump / *01) ---------------- Q Toggle Inset Window and Modes (+use / *11) ----- Follow Previous Player (+attack2) -------------- T Follow Next Player (+attack) ------------------- R ---------------- / Watch Player ----------------------------------- Right-click name on scoreboard HLTV Spectator Mode Movement Keys ================================= Move Forward (+forward) ------------------------ ------------ Move Backward (+back) -------------------------- ------------ Turn Left (+left) ------------------------------ Turn Right (+right) ---------------------------- Strafe Left (+moveleft) ------------------------ , Strafe Right (+moveright) ---------------------- . Move Up (+moveup) ------------------------------ A Move Down (+movedown) -------------------------- S Move Around Map / Target ----------------------- Mouse Axes Demo and Screenshot Keys ======================== Record Demo (record Temp.dem / *12) ------------ Play Demo (playdemo Temp.dem / *13) ------------ VCR Demo Player (viewdemo Temp.dem / *14) ------ Take BMP Screenshot (snapshot / *15) ----------- System Keys =========== Display System Console (toggleconsole) --------- ` ---------------- ~ Display Framerate (cl_showfps 1 / *16) --------- Texture Brightness (gl_overbright 1 / *17) ----- Room Reverb Type 1 (room_type 1 / *18) --------- Stop All Sound Effects (stopsound) ------------- Cancel Selection (cancelselect) ---------------- Pause Game (pause / *19) ----------------------- Quit Game (quit) ------------------------------- Steam Community In-Game Keys ============================ Display Steam Community Menu (*20) ------------- Take JPG Screenshot (*20) ---------------------- Voice Chat Push-To-Talk Key (*20) -------------- SturmBot Keys ============= Display SturmBot Menu (sturmbotmenu) ----------- Display Add Bot Menu (addbotmenu) -------------- Add Allies Bot (addbot 1) ---------------------- Add Axis Bot (addbot 2) ------------------------ Add Random Bot (addbot) ------------------------ Add 18 Bots (exec SturmBot_War.cfg / *21) ------ Kill and Respawn All Bots (killall) ------------ Kick Allies Bots (kickteam 1) ------------------ Kick Axis Bots (kickteam 2) -------------------- Kick All Bots (kickteam / *22) ----------------- Bot Team Balance (botteambalance 1 / *23) ------ Bot Observer Mode (observer 1 / *24) ----------- Pause/Unpause Bots (*25) ----------------------- Clan Match Mode Keys ==================== Clan Match (exec Clan_Match.cfg / *26) --------- L Clan Match Warmup Mode (*26) ------------------- U Restart Round (exec Restart_Round.cfg / *27) --- O Display Remaining Round Time (%t / *28) -------- I In-Game Menu (+commandmenu) -- Z ================================ Help -> Server Info -> Map Description Change Class (changeclass) Change Team (changeteam) Voice Messages 1 -> Move Out (voice_attack) -> Fall Back (voice_fallback) -> Covering Fire (voice_cover) -> I Need Backup (voice_backup) -> Hold This Position (voice_hold) Voice Messages 2 -> Yes Sir (voice_yessir) -> Left (voice_left) -> Right (voice_right) -> I Need Ammo (voice_needammo) -> Sniper (voice_sniper) -> Grenade (voice_grenade) Hand Signals 1 -> Stick Together (signal_sticktogether) -> Fall Back (signal_fallback) -> No Sir (signal_no) -> Yes Sir (signal_yes) -> Sniper (signal_sniper) -> I Need Backup (signal_backup) -> Right (signal_enemyright) -> Left (signal_enemyleft) Hand Signals 2 -> Flank Left (signal_flankleft) -> Flank Right (signal_flankright) -> Move Out (signal_moveout) -> Area Clear (signal_areaclear) -> Covering Fire (signal_coveringfire) -> Hold This Position (signal_holdposition) -> Enemy Ahead (signal_enemyspotted) -> Grenade (signal_grenade) Voice Commands Menu 1 (voice_menu1) -- V ======================================== 1. Squad Move Out (voice_attack) 2. Hold This Position (voice_hold) 3. Fall Back (voice_fallback) 4. Squad Flank Left (voice_left) 5. Squad Flank Right (voice_right) 6. Squad Stick Together (voice_sticktogether) 7. Squad Covering Fire (voice_cover) 8. Use Your Grenades (voice_usegrens) 9. Cease Fire (voice_ceasefire) 0. Cancel Voice Commands Menu 2 (voice_menu2) -- B ======================================== 1. Yes Sir (voice_yessir) 2. Negative (voice_negative) 3. I Need Backup (voice_backup) 4. Fire In the Hole (voice_fireinhole) 5. Grenade (voice_grenade) 6. Sniper (voice_sniper) 7. Taking Fire - Left Flank (voice_fireleft) 8. Taking Fire - Right Flank (voice_fireright) 9. Area Clear (voice_areaclear) 0. Cancel Voice Commands Menu 3 (voice_menu3) -- N ======================================== 1. Go Go Go (voice_gogogo) 2. Displace (voice_displace) 3. Enemy Ahead (voice_enemyahead) 4. Enemy Behind Us (voice_enemybehind) 5. MG42 Position Ahead (voice_mgahead) 6. Move Up The .30 Cal (voice_moveupmg) 7. I Need Ammo (voice_needammo) 8. Use The Bazooka (voice_usebazooka) 9. Panzerschreck (voice_bazookaspotted) 0. Cancel Mouse Configuration =================== Mouse Look (+mlook / *02) = On Look Spring (lookspring 1 / *02) = On Look Strafe (lookstrafe 0 / *04) = On Reverse Mouse (m_pitch -0.022) = On Mouse Filter (m_filter 1) = On Mouse Sensitivity (sensitivity 10) = 10 Mouse Forward Sensitivity (m_forward 10) = 10 Mouse Strafe Sensitivity (m_side 50) = 50 Game Configuration and System Console Command Notes =================================================== *01: alias +Crouched_Jump "+jump;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;+duck" alias -Crouched_Jump "-duck;-jump" bind "q" "+Crouched_Jump" Note: The custom aliases above interfere slightly with Day of Defeat's "change view" feature (+jump) when in spectator mode, and will inadvertently display the game's "spectator menu" (+duck) shortly after the "+Crouched_Jump" key is pressed. Simply press the "spectator menu" (+duck) key quickly after changing spectator view modes to overcome this minor problem, and to hide the spectator menu. *02: alias Mouselook_On "-strafe;+mlook;lookspring 1;bind MOUSE2 +Look_Strafe;bind e Mouselook_Off" alias Mouselook_Off "-Look_Strafe;-mlook;lookspring 0;bind MOUSE2 +strafe;bind e Mouselook_On" bind "e" "Mouselook_Off" *03: bind "KP_SLASH" "amx_fire_flamethrower;jihad" Note: The "amx_fire_flamethrower" and "jihad" commands require the "Flame Thrower" and "Jihad" AMXModX server plugins. *04: alias +Look_Strafe "m_pitch -0.011;lookstrafe 1" alias -Look_Strafe "lookstrafe 0;m_pitch -0.022" bind "MOUSE2" "+Look_Strafe" *05: hud_fastswitch 1 Enables single-press weapon selection. *06: alias Config_Markers_and_FireMarker "mp_markerstaytime 300;mp_nummapmarkers 15;firemarker" bind "m" "Config_Markers_and_FireMarker" *07: alias HUD_Off "hud_draw 0;cl_hud_health 0;cl_hud_reinforcements 0;cl_hud_ammo 0;cl_hud_objtimer 0 ;cl_hud_objectives 0;bind F5 HUD_On_1" alias HUD_On_1 "hud_draw 1;cl_hud_health 0;cl_hud_reinforcements 0;cl_hud_ammo 0;cl_hud_objtimer 0 ;cl_hud_objectives 0;bind F5 HUD_On_2" alias HUD_On_2 "cl_hud_health 1;cl_hud_reinforcements 0;cl_hud_ammo 0;cl_hud_objtimer 0 ;cl_hud_objectives 0;bind F5 HUD_On_3" alias HUD_On_3 "cl_hud_health 0;cl_hud_reinforcements 1;cl_hud_ammo 0;cl_hud_objtimer 0 ;cl_hud_objectives 0;bind F5 HUD_On_4" alias HUD_On_4 "cl_hud_health 0;cl_hud_reinforcements 0;cl_hud_ammo 1;cl_hud_objtimer 0 ;cl_hud_objectives 0;bind F5 HUD_On_5" alias HUD_On_5 "cl_hud_health 0;cl_hud_reinforcements 0;cl_hud_ammo 0;cl_hud_objtimer 1 ;cl_hud_objectives 0;bind F5 HUD_On_6" alias HUD_On_6 "cl_hud_health 0;cl_hud_reinforcements 0;cl_hud_ammo 0;cl_hud_objtimer 0 ;cl_hud_objectives 1;bind F5 HUD_All_On" alias HUD_All_On "cl_hud_health 1;cl_hud_reinforcements 1;cl_hud_ammo 1;cl_hud_objtimer 1 ;cl_hud_objectives 1;bind F5 HUD_Off" bind "F5" "HUD_Off" *08: alias HUD_Font_Small "cl_hudfont 0;bind F9 HUD_Font_Medium" alias HUD_Font_Medium "cl_hudfont 1;bind F9 HUD_Font_Large" alias HUD_Font_Large "cl_hudfont 2;bind F9 HUD_Font_Small" bind "F9" "HUD_Font_Large" *09: alias Name_SBC_Rich_Nagel "name [S.B.C.]%Rich%Nagel;bind h Name_SBC_Herr_Franz_Nagel" alias Name_SBC_Herr_Franz_Nagel "name [S.B.C.]%Herr%Franz%Nagel;bind h Name_SBC_Rich_Nagel" bind "h" "Name_SBC_Herr_Franz_Nagel" *10: Handy to respawn player when changing weapon class. *11: Note that "Inset Window" refers to Half-Life TV's "Picture-In-Picture" mode, and is disabled in Day of Defeat. *12: alias RecordDemo_Off "stop;bind F6 RecordDemo_On" alias RecordDemo_On "record Temp.dem;bind F6 RecordDemo_Off" bind "F6" "RecordDemo_On" *13: alias PlayDemo_Off "stopdemo;bind F7 PlayDemo_On" alias PlayDemo_On "playdemo Temp.dem;bind F7 PlayDemo_Off" bind "F7" "PlayDemo_On" *14: alias VCR_Demo_Player "dem_forcehltv 1;viewdemo Temp.dem" bind "F8" "VCR_Demo_Player" *15: hud_takesshots 1 Enables automatic screenshot when final scores are displayed. *16: alias Cl_ShowFPS_Off "cl_showfps 0;bind F2 Cl_ShowFPS_On" alias Cl_ShowFPS_On "cl_showfps 1;bind F2 Cl_ShowFPS_Off" bind "F2" "Cl_ShowFPS_On" *17: alias GL_OverBright_Off "gl_overbright 0;bind F11 GL_OverBright_On" alias GL_OverBright_On "gl_overbright 1;bind F11 GL_OverBright_Off" bind "F11" "GL_OverBright_On" Note: Only functions for Direct 3D graphics renderer. *18: alias Room_Type_0 "room_type 0;bind F3 Room_Type_1" alias Room_Type_1 "room_type 1;bind F3 Room_Type_0" bind "F3" "Room_Type_1" *19: Issue the console command "pausable 1" (or add the command to the "ListenServer.cfg" and "Server.cfg" files) to enable pausing of multiplayer games. *20: Configured within the Steam Client ("View/Settings/In-Game" and "View/Settings/Voice"). *21: "SturmBot_War.cfg" contents: // Bot War for SturmBot // // Usage: exec SturmBot_War.cfg // // United States vs. Germany Balanced Teams (Medium Skill Level): addbot 1 1 4 addbot 1 2 4 addbot 1 3 4 addbot 1 4 4 addbot 1 5 4 addbot 1 6 4 addbot 1 7 4 addbot 2 1 4 addbot 2 2 4 addbot 2 3 4 addbot 2 4 4 addbot 2 5 4 addbot 2 6 4 addbot 2 7 4 *22: alias Kick_All_SturmBots "kickteam 1;kickteam 2" bind "KP_DEL" "Kick_All_SturmBots" *23: alias SturmBot_Team_Balance_Off "botteambalance 0;bind KP_RIGHTARROW SturmBot_Team_Balance_On" alias SturmBot_Team_Balance_On "botteambalance 1;bind KP_RIGHTARROW SturmBot_Team_Balance_Off" bind "KP_RIGHTARROW" "SturmBot_Team_Balance_On" *24: alias SturmBot_Observer_Off "observer 0;bind KP_HOME SturmBot_Observer_On" alias SturmBot_Observer_On "observer 1;bind KP_HOME SturmBot_Observer_Off" bind "KP_HOME" "SturmBot_Observer_On" *25: alias Pause_Unpause_SturmBots "sturmbotmenu;wait;slot6" bind "KP_PLUS" "Pause_Unpause_SturmBots" *26: "Clan_Match.cfg" contents: // Clan Match Template for Swamp Buzzards Clan // http://steamcommunity.com/groups/SwampBuzzardsClan // American verses German maps, Sniper class only // Usage: exec Clan_Match.cfg // changelevel Weeds_DoD_Valley_Classic // map Weeds_DoD_Valley_Classic // mapchangecfgfile Weeds_DoD_Valley_Classic.cfg // condebug logsdir logs log on mp_clan_match 1 bind i "say Time remaining in current clan match round: %t." bind o "mp_clan_restartround 1" bind u "mp_clan_match_warmup 1" dem_forcehltv 1 hostname "Buzzard Shootout" hud_takesshots 1 // mapcyclefile Weeds_DoD_MapCycle.txt // maxplayers 4 // mp_alliesclasses -1 mp_alliesclasses 16 // mp_axisclasses -1 mp_axisclasses 16 mp_chattime 60 // mp_clan_match_warmup 1 mp_clan_ready_signal ready mp_clan_readyrestart 1 mp_clan_respawntime 5 // mp_clan_restartround 1 mp_clan_scoring 1 mp_clan_scoring_bonus_allies -1 mp_clan_scoring_bonus_axis -1 mp_clan_scoring_delay 60 mp_clan_scoring_values_allies 11111111 mp_clan_scoring_values_axis 11111111 mp_clan_showcutscenes 0 mp_clan_timer 30 mp_combinemglimits 0 mp_fadetoblack 1 mp_flashlight 1 mp_footsteps 1 mp_friendlyfire 1 // mp_limitallies* -1 mp_limitallies30cal 0 mp_limitalliesbar 0 mp_limitalliesbazooka 0 mp_limitalliescarbine 0 mp_limitalliesgarand 0 mp_limitalliesgreasegun 0 mp_limitalliesmortar 0 mp_limitalliesspring -1 mp_limitalliesthompson 0 // mp_limitaxis* -1 mp_limitaxisfg42 0 mp_limitaxisfg42s 0 mp_limitaxisk43 0 mp_limitaxiskar 0 mp_limitaxismg34 0 mp_limitaxismg42 0 mp_limitaxismortar 0 mp_limitaxismp40 0 mp_limitaxismp44 0 mp_limitaxispschreck 0 mp_limitaxisscopedkar -1 // mp_limitbrit* -1 mp_limitbritassault 0 mp_limitbritlight 0 mp_limitbritmg 0 mp_limitbritmortar 0 mp_limitbritpiat 0 mp_limitbritsniper 0 mp_log_scores 1 mp_log_scores_delay 10 mp_spawnbazookas 0 mp_teamlimit 0 mp_timelimit 30 mp_tkpenalty 0 say Chat/type "ready" to begin clan match round. sv_alltalk 0 Note: I, O, and U keys are rebound when "Clan_Match.cfg" file is executed. *27: "Restart_Round.cfg" contents: // Restart Round for Day of Defeat // Usage: exec Restart_Round.cfg // Note that the total duration for the "wait" commands are based on a // "sys_ticrate" of "100" (100 calculated amd rendered server frames per // second). mp_clan_match 1 mp_clan_timer 2 mp_clan_restartround 1 say Round will restart in 2 seconds. wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait say Round has now been restarted! mp_clan_match 0 wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait say Time remaining in current round: %t. *28: bind "i" "say Time remaining in current round: %t." ENJOY! ====== Rich „Weeds„ Nagel June 12, 2011 AIM: RichFNagel ICQ: 565228098 / RichFNagel richnagel@centurylink.net richnagel@simpilot.net rfnagel@juno.com http://www.richnagel.net http://www.simpilot.net/~richnagel http://www.cmoo.com/snor/ http://www.cmoo.com/snor/weeds/ http://www.cmoo.com/snor/weeds/Day_of_Defeat/ http://jasonwilliams400com.startlogic.com/snor/ http://jasonwilliams400com.startlogic.com/snor/weeds/ http://jasonwilliams400com.startlogic.com/snor/weeds/Day_of_Defeat/ http://tinyurl.com/TumbleWeedsCSCZDODServerStatus http://www.facebook.com/RFNagel http://www.facebook.com/profile.php?id=1164518241 http://steamcommunity.com/id/RichNagel http://steamcommunity.com/groups/SwampBuzzardsClan http://www.youtube.com/RFNagel