diff --git a/DeviceTree/devicetree.c b/DeviceTree/devicetree.c
index 147e2cb..8b0645d 100644
--- a/DeviceTree/devicetree.c
+++ b/DeviceTree/devicetree.c
@@ -36,7 +36,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiDevicetreeGuid = EFI_DEVICETREE_GUID;
 SHELL_VAR_CHECK_ITEM    DevicetreeCheckList[] = {
   {
diff --git a/DeviceTree/devicetree.inf b/DeviceTree/devicetree.inf
index a86a1a0..2132c62 100644
--- a/DeviceTree/devicetree.inf
+++ b/DeviceTree/devicetree.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   DevicetreeStrings.uni
   devicetree.c
   devicetree.h
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/EfiCompress/compress.c b/EfiCompress/compress.c
index e21c1f6..012bbef 100644
--- a/EfiCompress/compress.c
+++ b/EfiCompress/compress.c
@@ -262,7 +262,7 @@ STATIC UINT32 mBufSiz = 0, mOutputPos, mOutputMask, mSubBitBuf, mCrc;
 STATIC UINT32 mCompSize, mOrigSize;
 
 STATIC UINT16 *mFreq, *mSortPtr, mLenCnt[17], mLeft[2 * NC - 1], mRight[2 * NC - 1],
-              mCrcTable[UINT8_MAX + 1], mCFreq[2 * NC - 1], mCTable[4096], mCCode[NC],
+              mCrcTable[UINT8_MAX + 1], mCFreq[2 * NC - 1], mCCode[NC],
               mPFreq[2 * NP - 1], mPTCode[NPT], mTFreq[2 * NT - 1];
 
 STATIC NODE   mPos, mMatchPos, mAvail, *mPosition, *mParent, *mPrev, *mNext = NULL;
diff --git a/EfiCompress/compress.inf b/EfiCompress/compress.inf
index 2e62fbf..c8cb415 100644
--- a/EfiCompress/compress.inf
+++ b/EfiCompress/compress.inf
@@ -25,7 +25,7 @@ FILE_GUID            = A6A236DB-F3FB-4f7f-93BC-0AF7DAA583B9
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-..\ShCommonStrings.uni
+../ShCommonStrings.uni
 CompressStrings.uni
 compressMain.c
 compress.c
@@ -34,17 +34,17 @@ compress.h
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/EfiDecompress/Decompress.c b/EfiDecompress/Decompress.c
index 918f673..a1490a1 100644
--- a/EfiDecompress/Decompress.c
+++ b/EfiDecompress/Decompress.c
@@ -22,7 +22,7 @@ Revision History
 --*/
 
 #include "EfiShellLib.h"
-#include "decompress.h"
+#include "Decompress.h"
 
 extern UINT8    STRING_ARRAY_NAME[];
 
@@ -31,7 +31,7 @@ extern UINT8    STRING_ARRAY_NAME[];
 //
 #include STRING_DEFINES_FILE
 
-#include EFI_PROTOCOL_DEFINITION (decompress)
+#include EFI_PROTOCOL_DEFINITION (Decompress)
 
 EFI_HII_HANDLE  HiiDecompressHandle;
 EFI_GUID        EfiDecompressGuid = EFI_DECOMPRESS_GUID;
@@ -192,7 +192,7 @@ Returns:
   //
   //
   //
-  Status = LibLocateProtocol (&gEfiDecompressProtocolGuid, &Decompress);
+  Status = LibLocateProtocol (&gEfiDecompressProtocolGuid, (VOID**)&Decompress);
   if (EFI_ERROR (Status)) {
     PrintToken (STRING_TOKEN (STR_DECOMPRESS_PROTOCOL_NOT_FOUND), HiiDecompressHandle, L"efidecompress");
     Status = EFI_UNSUPPORTED;
diff --git a/EfiDecompress/Decompress.inf b/EfiDecompress/Decompress.inf
index f955220..6d1e70c 100644
--- a/EfiDecompress/Decompress.inf
+++ b/EfiDecompress/Decompress.inf
@@ -25,7 +25,7 @@ FILE_GUID            = D9D42564-071C-4d73-8DB0-43C55C62DC4C
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-..\ShCommonStrings.uni
+../ShCommonStrings.uni
 DecompressStrings.uni
 decompress.c
 decompress.h
@@ -33,17 +33,17 @@ decompress.h
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/IfConfig/IfConfig.c b/IfConfig/IfConfig.c
index 07cedc2..0e17081 100644
--- a/IfConfig/IfConfig.c
+++ b/IfConfig/IfConfig.c
@@ -29,7 +29,7 @@ extern UINT8 STRING_ARRAY_NAME[];
 //
 #define NIC_ITEM_CONFIG_SIZE   sizeof (NIC_IP4_CONFIG_INFO) + sizeof (EFI_IP4_ROUTE_TABLE) * 16
 
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 
 EFI_GUID  EfiIfConfigGuid = EFI_IFCONFIG_GUID;
 
@@ -669,7 +669,7 @@ Returns:
   Status = BS->LocateProtocol (
                 &gEfiHiiConfigRoutingProtocolGuid,
                 NULL,
-                &mHiiConfigRouting
+                (VOID**)&mHiiConfigRouting
                 );
   if (EFI_ERROR (Status)) {
     return EFI_NOT_FOUND;
diff --git a/IfConfig/IfConfig.inf b/IfConfig/IfConfig.inf
index b2e4964..e55dc32 100644
--- a/IfConfig/IfConfig.inf
+++ b/IfConfig/IfConfig.inf
@@ -25,7 +25,7 @@ FILE_GUID            = 6394CF3D-D3DC-4f69-926D-AF9FFE59F922
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   IfConfigStrings.uni
   IfConfig.c
   IfConfig.h
@@ -33,25 +33,24 @@ COMPONENT_TYPE       = APPLICATION
   ShellNetHelper.h
   
 [includes.common]
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(EDK_SOURCE)\Foundation\Library\Dxe\Include
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(EDK_SOURCE)/Foundation/Library/Dxe/Include
+  $(DEST_DIR./
 
 [libraries.common]
   EfiShellLib
   EdkProtocolLib
   EfiProtocolLib
   EdkGuidLib
-  EfiDriverLib
 
 [nmake.common]
   C_PROJ_FLAGS = $(C_PROJ_FLAGS)
diff --git a/IpConfig/IpConfig.c b/IpConfig/IpConfig.c
index 0c3e4c3..b2154aa 100644
--- a/IpConfig/IpConfig.c
+++ b/IpConfig/IpConfig.c
@@ -39,7 +39,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiIpConfigGuid = EFI_IPCONFIG_GUID;
 SHELL_VAR_CHECK_ITEM  IpconfigCheckList[] = {
   {
diff --git a/IpConfig/IpConfig.inf b/IpConfig/IpConfig.inf
index bc8271c..46d4f52 100644
--- a/IpConfig/IpConfig.inf
+++ b/IpConfig/IpConfig.inf
@@ -25,24 +25,24 @@ FILE_GUID            = 1D73AC03-AF05-44b3-B21E-93A174893FA6
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   IpConfigStrings.uni
   IpConfig.c
   IpConfig.h 
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/Library/Arm/efilibplat.h b/Library/Arm/efilibplat.h
new file mode 100644
index 0000000..3b284fe
--- /dev/null
+++ b/Library/Arm/efilibplat.h
@@ -0,0 +1,38 @@
+/*++
+
+Copyright (c) 2005, Intel Corporation                                                         
+All rights reserved. This program and the accompanying materials                          
+are licensed and made available under the terms and conditions of the BSD License         
+which accompanies this distribution. The full text of the license may be found at         
+http://opensource.org/licenses/bsd-license.php                                            
+                                                                                          
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             
+
+Module Name:
+
+    efilibplat.h
+
+Abstract:
+
+    EFI to compile bindings
+
+
+
+
+Revision History
+
+--*/
+#ifndef _EFI_LIB_PLAT_H_
+#define _EFI_LIB_PLAT_H_
+
+VOID
+InitializeLibPlatform (
+  IN EFI_HANDLE           ImageHandle,
+  IN EFI_SYSTEM_TABLE     *SystemTable
+  );
+
+#define MIN_ALIGNMENT_SIZE  4
+
+#endif
+
diff --git a/Library/CRC.c b/Library/CRC.c
index ce5387b..ebbdf70 100644
--- a/Library/CRC.c
+++ b/Library/CRC.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 UINT32  CRCTable[256] = {
   0x00000000,
diff --git a/Library/CRC.h b/Library/CRC.h
index 326a5e1..b25a275 100644
--- a/Library/CRC.h
+++ b/Library/CRC.h
@@ -53,4 +53,5 @@ CalculateCrc (
   UINTN Size
   );
 
-#endif
\ No newline at end of file
+#endif
+
diff --git a/Library/ConsistMapping.c b/Library/ConsistMapping.c
index b70fa06..61eda8b 100644
--- a/Library/ConsistMapping.c
+++ b/Library/ConsistMapping.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 MTD_NAME  mMTDName[] = {
   {
diff --git a/Library/ConsistMapping.h b/Library/ConsistMapping.h
index bc8d6f0..2efad28 100644
--- a/Library/ConsistMapping.h
+++ b/Library/ConsistMapping.h
@@ -79,4 +79,5 @@ DevicePathConsistMappingCompare (
   IN  VOID *Buffer2
   );
 
-#endif
\ No newline at end of file
+#endif
+
diff --git a/Library/DPath.c b/Library/DPath.c
index f0974ac..73086d7 100644
--- a/Library/DPath.c
+++ b/Library/DPath.c
@@ -20,7 +20,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 EFI_GUID mEfiDevicePathMessagingUartFlowControlGuid = DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL;
 
@@ -1468,7 +1468,7 @@ Returns:
   
   Status = LibLocateProtocol (
              &gEfiDevicePathToTextProtocolGuid,
-             &DevPathToText
+             (VOID**)&DevPathToText
              );
   if (!EFI_ERROR (Status)) {
     ToText = DevPathToText->ConvertDevicePathToText (
@@ -1766,7 +1766,7 @@ Returns:
       Status = BS->HandleProtocol (
                     Device,
                     Protocol,
-                    Interface
+                    (VOID**)Interface
                     );
     }
   }
diff --git a/Library/DPath.h b/Library/DPath.h
index 68da82b..bb7dd93 100644
--- a/Library/DPath.h
+++ b/Library/DPath.h
@@ -24,7 +24,7 @@ Revision History
 #ifndef _D_PATH_H
 #define _D_PATH_H
 
-#define NextStrA(a) ((UINT8 *) (((UINT8 *) (a)) + strlena (a) + 1))
+#define NextStrA(a) (CHAR8*)((UINT8 *) (((UINT8 *) (a)) + strlena (a) + 1))
 
 #include EFI_GUID_DEFINITION (PcAnsi)
 
diff --git a/Library/Data.c b/Library/Data.c
index d2ffe4a..979b3dd 100644
--- a/Library/Data.c
+++ b/Library/Data.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 //
 // ShellLibInitialized - TRUE once InitializeShellLib() is called for the first time
diff --git a/Library/EfiShellLib.h b/Library/EfiShellLib.h
index 6243d1d..a174758 100644
--- a/Library/EfiShellLib.h
+++ b/Library/EfiShellLib.h
@@ -25,7 +25,7 @@ Revision History
 #define _EFI_SHELL_LIB_INCLUDE_
 
 #include "Tiano.h"
-#include "ShellEnv.h"
+#include "shellenv.h"
 #include "pci22.h"
 
 #include EFI_ARCH_PROTOCOL_DEFINITION (Bds)
@@ -51,7 +51,7 @@ Revision History
 #include EFI_GUID_DEFINITION (PrimaryConsoleOutDevice)
 #include EFI_GUID_DEFINITION (PrimaryStandardErrorDevice)
 #include EFI_GUID_DEFINITION (SalSystemTable)
-#include EFI_GUID_DEFINITION (Smbios)
+#include EFI_GUID_DEFINITION (SmBios)
 #include EFI_GUID_DEFINITION (StandardErrorDevice)
 #include EFI_GUID_DEFINITION (FrameworkDevicePath)
 #include EFI_PROTOCOL_DEFINITION (AbsolutePointer)
@@ -67,7 +67,7 @@ Revision History
 #include EFI_PROTOCOL_DEFINITION (DebugPort)
 #include EFI_PROTOCOL_DEFINITION (DebugSupport)
 #include EFI_PROTOCOL_DEFINITION (Decompress)
-#include EFI_PROTOCOL_DEFINITION (DeviceIO)
+#include EFI_PROTOCOL_DEFINITION (DeviceIo)
 #include EFI_PROTOCOL_DEFINITION (DevicePath)
 #include EFI_PROTOCOL_DEFINITION (DevicePathFromText)
 #include EFI_PROTOCOL_DEFINITION (DevicePathToText)
@@ -111,7 +111,7 @@ Revision History
 #include EFI_PROTOCOL_DEFINITION (PciRootBridgeIo)
 #include EFI_PROTOCOL_DEFINITION (PlatformDriverOverride)
 #include EFI_PROTOCOL_DEFINITION (PxeBaseCode)
-#include EFI_PROTOCOL_DEFINITION (PxeBaseCodeCallback)
+#include EFI_PROTOCOL_DEFINITION (PxeBaseCodeCallBack)
 #include EFI_PROTOCOL_DEFINITION (ScsiIo)
 #include EFI_PROTOCOL_DEFINITION (ScsiPassThru)
 #include EFI_PROTOCOL_DEFINITION (SectionExtraction)
@@ -152,7 +152,7 @@ Revision History
 #include EFI_PROTOCOL_DEFINITION (PlatformToDriverConfiguration)
 
 #include "efilibplat.h"
-#include "efipart.h"
+#include "EfiPart.h"
 #include "ShellDebug.h"
 #include "CRC.h"
 #include "DPath.h"
diff --git a/Library/EfiShellLib.inf b/Library/EfiShellLib.inf
index d450f9d..2093115 100644
--- a/Library/EfiShellLib.inf
+++ b/Library/EfiShellLib.inf
@@ -45,34 +45,38 @@ COMPONENT_TYPE  = LIBRARY
   HiiSupport.c
 
 [sources.ia32]
-  ia32\math.c
-  ia32\initplat.c
+  IA32/math.c
+  IA32/initplat.c
 
 [sources.ipf]
-  ipf\math.c
-  ipf\initplat.c
-  ipf\palproc.s
-  ipf\salpal.c
+  IPF/math.c
+  IPF/initplat.c
+  IPF/palproc.s
+  IPF/salpal.c
 
 [sources.EBC]
-  EBC\math.c
-  EBC\initplat.c
+  Ebc/math.c
+  Ebc/initplat.c
   
 [sources.x64]
-  ipf\math.c
-  ia32\initplat.c
+  IPF/math.c
+  IA32/initplat.c
+
+[sources.ARM]
+  IPF/math.c
+  IA32/initplat.c
 
 [includes.common]
   .
-  ..\Inc
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Core\Dxe
+  ../Inc
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Core/Dxe
 
 [libraries.common]
   EdkFrameworkProtocolLib
diff --git a/Library/Event.c b/Library/Event.c
index 4929e4b..a0cbdc2 100644
--- a/Library/Event.c
+++ b/Library/Event.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 EFI_EVENT
 LibCreateProtocolNotifyEvent (
diff --git a/Library/Event.h b/Library/Event.h
index b8df801..5de49b4 100644
--- a/Library/Event.h
+++ b/Library/Event.h
@@ -50,4 +50,5 @@ WaitForEventWithTimeout (
   OUT EFI_INPUT_KEY                 *Key
   );
 
-#endif
\ No newline at end of file
+#endif
+
diff --git a/Library/FileIO.c b/Library/FileIO.c
index 40c67d1..8820c52 100644
--- a/Library/FileIO.c
+++ b/Library/FileIO.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 typedef struct _PATH_COMPONENTS {
   CHAR16                  *Name;
@@ -719,7 +719,6 @@ LibSplitFsAndPath (
   IN OUT CHAR16                       **Path
   )
 {
-  EFI_STATUS  Status;
   CHAR16      *p;
   UINTN       Size;
 
@@ -728,7 +727,6 @@ LibSplitFsAndPath (
 
   *Fs     = NULL;
   *Path   = NULL;
-  Status  = EFI_SUCCESS;
 
   p       = AbPath;
   while (*p) {
@@ -1017,13 +1015,11 @@ Return:
   EFI_LIST_ENTRY  SrcList;
   EFI_LIST_ENTRY  DstList;
   EFI_STATUS      Status;
-  EFI_LIST_ENTRY  *Link;
   SHELL_FILE_ARG  *SrcArg;
   SHELL_FILE_ARG  *DstArg;
   
   ASSERT (IsSame != NULL);
 
-  Link    = NULL;
   SrcArg  = NULL;
   DstArg  = NULL;
   InitializeListHead (&SrcList);
diff --git a/Library/FileIO.h b/Library/FileIO.h
index bb07d91..54fd6d5 100644
--- a/Library/FileIO.h
+++ b/Library/FileIO.h
@@ -208,4 +208,5 @@ CloseSimpleReadFile (
   IN SIMPLE_READ_FILE               SimpleReadHandle
   );
 
-#endif
\ No newline at end of file
+#endif
+
diff --git a/Library/Handle.c b/Library/Handle.c
index 33f925d..f406d5a 100644
--- a/Library/Handle.c
+++ b/Library/Handle.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 EFI_STATUS
 LibLocateHandle (
@@ -131,7 +131,6 @@ Returns:
   EFI_HANDLE                *BlockIoBuffer;
   EFI_DEVICE_PATH_PROTOCOL  *DevicePath;
   UINTN                     Index;
-  EFI_DEVICE_PATH_PROTOCOL  *Start;
   EFI_DEVICE_PATH_PROTOCOL  *Next;
   EFI_DEVICE_PATH_PROTOCOL  *DevPath;
   HARDDRIVE_DEVICE_PATH     *HardDriveDevicePath;
@@ -204,7 +203,6 @@ Returns:
       PreviousNodeIsHardDriveDevicePath = FALSE;
 
       DevPath = DevicePath;
-      Start = DevPath;
       //
       // Check for end of device path type
       //
@@ -796,14 +794,12 @@ LibScanHandleDatabase (
   UINTN                               OpenInfoIndex;
   UINTN                               ChildIndex;
   BOOLEAN                             DriverBindingHandleIndexValid;
-  BOOLEAN                             ControllerHandleIndexValid;
 
   DriverBindingHandleIndexValid = FALSE;
   if (DriverBindingHandleIndex != NULL) {
     *DriverBindingHandleIndex = 0xffffffff;
   }
 
-  ControllerHandleIndexValid = FALSE;
   if (ControllerHandleIndex != NULL) {
     *ControllerHandleIndex = 0xffffffff;
   }
@@ -847,7 +843,6 @@ LibScanHandleDatabase (
 
     if (ControllerHandle != NULL && ControllerHandleIndex != NULL && (*HandleBuffer)[HandleIndex] == ControllerHandle) {
       *ControllerHandleIndex      = (UINT32) HandleIndex;
-      ControllerHandleIndexValid  = TRUE;
     }
 
   }
@@ -1286,7 +1281,7 @@ Returns:
     Status = BS->HandleProtocol (
                   Handles[Index],
                   ProtocolGuid,
-                  Interface
+                  (VOID**)Interface
                   );
 
     if (!EFI_ERROR (Status)) {
diff --git a/Library/HiiSupport.c b/Library/HiiSupport.c
index bce645b..5f70712 100644
--- a/Library/HiiSupport.c
+++ b/Library/HiiSupport.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 #if (EFI_SPECIFICATION_VERSION >= 0x0002000A)
 
@@ -56,11 +56,11 @@ Returns:
     return EFI_SUCCESS;
   }
 
-  Status = LibLocateProtocol (&gEfiHiiDatabaseProtocolGuid, &gLibHiiDatabase);
+  Status = LibLocateProtocol (&gEfiHiiDatabaseProtocolGuid, (VOID**)&gLibHiiDatabase);
   if (EFI_ERROR (Status)) {
     return Status;
   }
-  Status = LibLocateProtocol (&gEfiHiiStringProtocolGuid, &gLibHiiString);
+  Status = LibLocateProtocol (&gEfiHiiStringProtocolGuid, (VOID**)&gLibHiiString);
   if (EFI_ERROR (Status)) {
     return Status;
   }  
diff --git a/Library/IO.c b/Library/IO.c
index 81f26fd..749aacb 100644
--- a/Library/IO.c
+++ b/Library/IO.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 #define PRINT_STRING_LEN        1024
 #define PRINT_ITEM_BUFFER_LEN   100
@@ -86,8 +86,8 @@ typedef struct _pstate {
 typedef struct {
   BOOLEAN PageBreak;
   BOOLEAN AutoWrap;
-  INTN    MaxRow;
-  INTN    MaxColumn;
+  UINTN   MaxRow;
+  UINTN   MaxColumn;
   INTN    InitRow;
   INTN    Row;
   INTN    Column;
@@ -1575,7 +1575,7 @@ Returns:
 {
   BOOLEAN       Done;
   UINTN         Column;
-  INTN          Row;
+  UINTN         Row;
   UINTN         StartColumn;
   UINTN         Update;
   UINTN         Delete;
@@ -1928,8 +1928,8 @@ LibGetPageBreak (
   return mPrintMode.PageBreak;
 }
 
+#if 0
 STATIC
-
 BOOLEAN
 GetOutputPause (
   VOID
@@ -1937,6 +1937,7 @@ GetOutputPause (
 {
   return mPrintMode.OutputPause;
 }
+#endif
 
 INTN
 DbgPrint (
diff --git a/Library/IO.h b/Library/IO.h
index 7469c32..5d13e17 100644
--- a/Library/IO.h
+++ b/Library/IO.h
@@ -157,4 +157,5 @@ LibGetPageBreak (
   );
 
 
-#endif
\ No newline at end of file
+#endif
+
diff --git a/Library/Init.c b/Library/Init.c
index 80dc3a3..37d555f 100644
--- a/Library/Init.c
+++ b/Library/Init.c
@@ -20,7 +20,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 extern EFI_UNICODE_COLLATION_PROTOCOL LibStubUnicodeInterface;
 
diff --git a/Library/Lock.c b/Library/Lock.c
index 8a40db5..b3f9bad 100644
--- a/Library/Lock.c
+++ b/Library/Lock.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 VOID
 InitializeLock (
diff --git a/Library/Lock.h b/Library/Lock.h
index 9e35b92..275a221 100644
--- a/Library/Lock.h
+++ b/Library/Lock.h
@@ -45,4 +45,5 @@ ReleaseLock (
   IN FLOCK    *Lock
   );
 
-#endif
\ No newline at end of file
+#endif
+
diff --git a/Library/Mem.c b/Library/Mem.c
index f82cb52..9675b52 100644
--- a/Library/Mem.c
+++ b/Library/Mem.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 VOID
 SetMem (
diff --git a/Library/Mem.h b/Library/Mem.h
index bca1e1d..b3d222d 100644
--- a/Library/Mem.h
+++ b/Library/Mem.h
@@ -73,4 +73,5 @@ ZeroMem (
   IN UINTN    Size
   );
 
-#endif
\ No newline at end of file
+#endif
+
diff --git a/Library/Misc.c b/Library/Misc.c
index c778236..b476d08 100644
--- a/Library/Misc.c
+++ b/Library/Misc.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 #if (PLATFORM == NT32)
 #define LOCAL_EFI_WIN_NT_THUNK_PROTOCOL_GUID \
@@ -348,7 +348,7 @@ Returns:
   ASSERT (Buffer != NULL);
 
   if (mShellEnv == NULL) {
-    Status = LibLocateProtocol (&ShellEnvProtocol, &mShellEnv);
+    Status = LibLocateProtocol (&ShellEnvProtocol, (VOID**)&mShellEnv);
     if (EFI_ERROR (Status)) {
       mShellEnv = NULL;
     }
@@ -1171,7 +1171,7 @@ Returns:
       Status = BS->HandleProtocol (
                     Image->DeviceHandle,
                     &gEfiFirmwareVolumeProtocolGuid,
-                    &FV
+                    (VOID**)&FV
                     );
       if (!EFI_ERROR (Status)) {
         Status = FV->ReadSection (
@@ -1192,7 +1192,7 @@ Returns:
         Status = BS->HandleProtocol (
                       Image->DeviceHandle,
                       &gEfiFirmwareVolume2ProtocolGuid,
-                      &FV2
+                      (VOID**)&FV2
                       );
         if (!EFI_ERROR (Status)) {
           Status = FV2->ReadSection (
@@ -1339,7 +1339,7 @@ LibCmdGetStringByToken (
 {
   EFI_STATUS      Status;
   CHAR16          *String;
-  EFI_HII_HANDLE  HiiHandle;
+  STATIC EFI_HII_HANDLE  HiiHandle;
 
   ASSERT (Str);
 
diff --git a/Library/Perf.c b/Library/Perf.c
index 43e09ea..87c4113 100644
--- a/Library/Perf.c
+++ b/Library/Perf.c
@@ -19,7 +19,7 @@ Abstract:
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 #include EFI_PROTOCOL_DEFINITION (Performance)
 
diff --git a/Library/RtData.c b/Library/RtData.c
index af55cb4..145e933 100644
--- a/Library/RtData.c
+++ b/Library/RtData.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 //
 // RT - pointer to the runtime table
diff --git a/Library/ShellDebug.c b/Library/ShellDebug.c
index b31ef06..c8b93d5 100644
--- a/Library/ShellDebug.c
+++ b/Library/ShellDebug.c
@@ -19,7 +19,7 @@ Abstract:
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 #include EFI_PROTOCOL_DEFINITION (DebugAssert)
 
 EFI_DEBUG_ASSERT_PROTOCOL *mDebugAssert = NULL;
diff --git a/Library/ShellEnvInt.c b/Library/ShellEnvInt.c
index b99d973..53de481 100644
--- a/Library/ShellEnvInt.c
+++ b/Library/ShellEnvInt.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 EFI_STATUS
 ShellExecute (
diff --git a/Library/ShellEnvInt.h b/Library/ShellEnvInt.h
index 4182dff..7eef19a 100644
--- a/Library/ShellEnvInt.h
+++ b/Library/ShellEnvInt.h
@@ -196,4 +196,5 @@ ShellGetHandleNum (
   VOID
   );
 
-#endif
\ No newline at end of file
+#endif
+
diff --git a/Library/Str.c b/Library/Str.c
index ca0c76b..d881dae 100644
--- a/Library/Str.c
+++ b/Library/Str.c
@@ -22,7 +22,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 INTN
 StrCmp (
@@ -421,7 +421,7 @@ Returns:
         return (UINTN) -1;
       }
 
-      u = u << 4 | c - (c >= 'A' ? 'A' - 10 : '0');
+      u = (u << 4) | (c - (c >= 'A' ? 'A' - 10 : '0'));
     } else {
       break;
     }
@@ -472,7 +472,7 @@ Returns:
   c = *(str++);
   while (c) {
     if (c >= '0' && c <= '9') {
-      if (u > m || u == m && c - '0' > (INTN) n) {
+      if ((u > m) || ((u == m) && (c - '0' > (INTN) n))) {
         return (UINTN) -1;
       }
 
diff --git a/Library/VarCheck.c b/Library/VarCheck.c
index 53597ff..1abec9d 100644
--- a/Library/VarCheck.c
+++ b/Library/VarCheck.c
@@ -21,7 +21,7 @@ Revision History
 
 --*/
 
-#include "EfiShelllib.h"
+#include "EfiShellLib.h"
 
 VOID
 LibCheckVarFreeVarList (
diff --git a/Library/VarCheck.h b/Library/VarCheck.h
index bc1f412..45aba2c 100644
--- a/Library/VarCheck.h
+++ b/Library/VarCheck.h
@@ -41,7 +41,7 @@ typedef enum {
   ARG_PARTIALLY_QUOTED  = 0x2,
   ARG_FIRST_HALF_QUOTED = 0x4,
   ARG_FIRST_CHAR_IS_ESC = 0x8
-};
+} SHELL_ARG_EXPR;
 
 typedef struct {
   CHAR16                    *FlagStr;
diff --git a/LoadPciRom/LoadPciRom.c b/LoadPciRom/LoadPciRom.c
index f8854b7..7afcefd 100644
--- a/LoadPciRom/LoadPciRom.c
+++ b/LoadPciRom/LoadPciRom.c
@@ -24,7 +24,7 @@ Revision History
 
 #include "EfiShellLib.h"
 #include "LoadPciRom.h"
-#include "Pci22.h"
+#include "pci22.h"
 
 extern UINT8    STRING_ARRAY_NAME[];
 
@@ -56,7 +56,7 @@ LoadEfiDriversFromRomImage (
   );
 
 EFI_HANDLE      gMyImageHandle;
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiLoadPciRomGuid = EFI_LOADPCIROM_GUID;
 SHELL_VAR_CHECK_ITEM    LPRCheckList[] = {
   {
@@ -377,7 +377,7 @@ Returns:
         }
 
         if (EfiRomHeader->CompressionType == EFI_PCI_EXPANSION_ROM_HEADER_COMPRESSED) {
-          Status = BS->LocateProtocol (&gEfiDecompressProtocolGuid, NULL, &Decompress);
+          Status = BS->LocateProtocol (&gEfiDecompressProtocolGuid, NULL, (VOID**)&Decompress);
           if (EFI_ERROR (Status)) {
             PrintToken (STRING_TOKEN (STR_LOADPCIROM_DECOMP_NOT_FOUND), HiiHandle);
             SkipImage = TRUE;
diff --git a/LoadPciRom/LoadPciRom.inf b/LoadPciRom/LoadPciRom.inf
index 8e79af7..943a148 100644
--- a/LoadPciRom/LoadPciRom.inf
+++ b/LoadPciRom/LoadPciRom.inf
@@ -41,23 +41,23 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
   LoadPciRomStrings.uni
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   LoadPciRom.c
   LoadPciRom.h  
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/Ping/Ping.c b/Ping/Ping.c
index 7d92881..16b9b4b 100644
--- a/Ping/Ping.c
+++ b/Ping/Ping.c
@@ -20,14 +20,14 @@ Abstract:
 --*/
 
 #include "EfiShellLib.h"
-#include "CpuFuncs.h"
+//#include "CpuFuncs.h"
 #include EFI_ARCH_PROTOCOL_DEFINITION (Cpu)
 #include EFI_PROTOCOL_DEFINITION (Ip4)
 #include "Ping.h"
 #include STRING_DEFINES_FILE
 extern UINT8 STRING_ARRAY_NAME[];
 
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 
 EFI_GUID  EfiPingGuid = EFI_PING_GUID;
 SHELL_VAR_CHECK_ITEM  PingCheckList[] = {
@@ -114,6 +114,8 @@ UINT32            RttSum;
 UINT32            RttMin;
 UINT32            RttMax;
 
+EFI_CPU_ARCH_PROTOCOL  *gCpu = NULL;
+
 STATIC
 UINT64
 GetTimerValue (
@@ -135,7 +137,22 @@ Returns:
 
 --*/
 {
-  return EfiReadTsc ();
+  static UINT64          CurrentTick = 0;
+  UINT64                 TimerPeriod;
+  EFI_STATUS             Status;
+
+  ASSERT (gCpu != NULL);
+
+  Status = gCpu->GetTimerValue (gCpu, 0, &CurrentTick, &TimerPeriod);
+  if (EFI_ERROR (Status)) {
+    //
+    // The WinntGetTimerValue will return EFI_UNSUPPORTED. Set the
+    // TimerPeriod by ourselves.
+    //
+    CurrentTick += 1000000;
+  }
+  
+  return CurrentTick;
 }
 
 STATIC
@@ -168,7 +185,7 @@ Returns:
   //
   // Locate the Cpu Arch Protocol.
   //
-  Status = BS->LocateProtocol (&gEfiCpuArchProtocolGuid, NULL, &Cpu);
+  Status = BS->LocateProtocol (&gEfiCpuArchProtocolGuid, NULL, (VOID**)&Cpu);
   if (EFI_ERROR (Status)) {
     return Status;
   }
diff --git a/Ping/Ping.inf b/Ping/Ping.inf
index 64dec5c..1052418 100644
--- a/Ping/Ping.inf
+++ b/Ping/Ping.inf
@@ -25,24 +25,24 @@ FILE_GUID            = FAAA94BA-7095-4c0f-8D69-8E00C8328863
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   PingStrings.uni
   Ping.h
   Ping.c
 
 [includes.common]
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(EDK_SOURCE)\Foundation\Library\Dxe\Include
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(EDK_SOURCE)/Foundation/Library/Dxe/Include
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
@@ -52,7 +52,6 @@ COMPONENT_TYPE       = APPLICATION
   ArchProtocolLib
   EdkGuidLib
   EdkFrameworkGuidLib
-  EfiDriverLib
 
 [libraries.Ia32]
   CpuIA32Lib
diff --git a/Shell.inf b/Shell.inf
index fee3558..363e165 100644
--- a/Shell.inf
+++ b/Shell.inf
@@ -25,179 +25,184 @@ FILE_GUID            = c57ad6b7-0515-40a8-9d21-551652854e37
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  Library\ShellDebug.c
-  Library\DPath.c
-  Library\Init.c
-  Library\Lock.c
-  Library\Str.c
-  Library\IO.c
-  Library\Mem.c
-  Library\Misc.c
-  Library\Data.c
-  Library\RtData.c
-  Library\ShellEnvInt.c
-  Library\Handle.c
-  Library\FileIO.c
-  Library\ConsistMapping.c
-  Library\CRC.c
-  Library\Event.c
-  Library\Perf.c
-  Library\VarCheck.c
-  Library\HiiSupport.c  
-
-  newshell\NshellStrings.uni
-  newshell\init.c
-  newshell\nshell.h
-  newshell\fakehii.c
+  Library/ShellDebug.c
+  Library/DPath.c
+  Library/Init.c
+  Library/Lock.c
+  Library/Str.c
+  Library/IO.c
+  Library/Mem.c
+  Library/Misc.c
+  Library/Data.c
+  Library/RtData.c
+  Library/ShellEnvInt.c
+  Library/Handle.c
+  Library/FileIO.c
+  Library/ConsistMapping.c
+  Library/CRC.c
+  Library/Event.c
+  Library/Perf.c
+  Library/VarCheck.c
+  Library/HiiSupport.c  
+
+  newshell/NshellStrings.uni
+  newshell/init.c
+  newshell/nshell.h
+  newshell/fakehii.c
 
   ShCommonStrings.uni
-  shellenv\ShellenvHelpStrings.uni
-  shellenv\ShellenvStrings.uni
-  shellenv\ScriptCmdStrings.uni
-  shellenv\ConnectStrings.uni
-  shellenv\EchoStrings.uni
-  shellenv\HelpStrings.uni
-  shellenv\MapStrings.uni
-  shellenv\CdStrings.uni
-  shellenv\DhStrings.uni
+  shellenv/ShellenvHelpStrings.uni
+  shellenv/ShellenvStrings.uni
+  shellenv/ScriptCmdStrings.uni
+  shellenv/ConnectStrings.uni
+  shellenv/EchoStrings.uni
+  shellenv/HelpStrings.uni
+  shellenv/MapStrings.uni
+  shellenv/CdStrings.uni
+  shellenv/DhStrings.uni
   
-  shellenv\cmddisp.c
-  shellenv\connect.c
-  shellenv\data.c
-  shellenv\exec.c
-  shellenv\init.c
-  shellenv\protid.c
-  shellenv\var.c
-  shellenv\conio.c
-  shellenv\consoleproxy.c
-  shellenv\handle.c
-  shellenv\dprot.c
-  shellenv\map.c
-  shellenv\marg.c
-  shellenv\batch.c
-  shellenv\if.c
-  shellenv\goto.c
-  shellenv\echo.c
-  shellenv\pause.c
-  shellenv\for.c
-  shellenv\wait.c
-  shellenv\help.c
-  shellenv\shelle.h
-  shellenv\shellenvguid.h
-  shellenv\parsecmd.c
-  shellenv\shift.c
+  shellenv/cmddisp.c
+  shellenv/connect.c
+  shellenv/data.c
+  shellenv/exec.c
+  shellenv/init.c
+  shellenv/protid.c
+  shellenv/var.c
+  shellenv/conio.c
+  shellenv/consoleproxy.c
+  shellenv/handle.c
+  shellenv/dprot.c
+  shellenv/map.c
+  shellenv/marg.c
+  shellenv/batch.c
+  shellenv/if.c
+  shellenv/goto.c
+  shellenv/echo.c
+  shellenv/pause.c
+  shellenv/for.c
+  shellenv/wait.c
+  shellenv/help.c
+  shellenv/shelle.h
+  shellenv/shellenvguid.h
+  shellenv/parsecmd.c
+  shellenv/shift.c
  
-  unload\UnloadStrings.uni
-  unload\unload.c
+  unload/UnloadStrings.uni
+  unload/unload.c
   
-  attrib\AttribStrings.uni
-  attrib\attrib.c
-  attrib\attrib.h
+  attrib/AttribStrings.uni
+  attrib/attrib.c
+  attrib/attrib.h
 
-  cls\clsstrings.uni
-  cls\cls.c
+  cls/clsstrings.uni
+  cls/cls.c
 
-  cp\CpStrings.uni
-  cp\cp.h
-  cp\cp.c
+  cp/CpStrings.uni
+  cp/cp.h
+  cp/cp.c
  
-  date\DateStrings.uni
-  date\date.c
-  date\date.h
+  date/DateStrings.uni
+  date/date.c
+  date/date.h
 
-  load\LoadStrings.uni
-  load\load.c
-  load\load.h
+  load/LoadStrings.uni
+  load/load.c
+  load/load.h
 
-  ls\LsStrings.uni
-  ls\ls.h
-  ls\ls.c
+  ls/LsStrings.uni
+  ls/ls.h
+  ls/ls.c
 
-  mkdir\MkdirStrings.uni
-  mkdir\mkdir.c
-  mkdir\mkdir.h
+  mkdir/MkdirStrings.uni
+  mkdir/mkdir.c
+  mkdir/mkdir.h
 
-  mv\MvStrings.uni
-  mv\mv.c
-  mv\mv.h
+  mv/MvStrings.uni
+  mv/mv.c
+  mv/mv.h
  
-  reset\ResetStrings.uni
-  reset\reset.c
-  reset\reset.h
+  reset/ResetStrings.uni
+  reset/reset.c
+  reset/reset.h
   
-  rm\RmStrings.uni
-  rm\rm.h
-  rm\rm.c
+  rm/RmStrings.uni
+  rm/rm.h
+  rm/rm.c
   
-  type\TypeStrings.uni
-  type\type.c
-  type\type.h
-  time\TimeStrings.uni
-  time\time.c
-  time\time.h
-
-  touch\TouchStrings.uni
-  touch\touch.c
-  touch\touch.h
-
-  vol\VolStrings.uni
-  vol\vol.c
-  vol\vol.h
-
-  ver\VerStrings.uni
-  ver\ver.c
-  ver\ver.h
+  type/TypeStrings.uni
+  type/type.c
+  type/type.h
+  time/TimeStrings.uni
+  time/time.c
+  time/time.h
+
+  touch/TouchStrings.uni
+  touch/touch.c
+  touch/touch.h
+
+  vol/VolStrings.uni
+  vol/vol.c
+  vol/vol.h
+
+  ver/VerStrings.uni
+  ver/ver.c
+  ver/ver.h
   
-  drivers\driversStrings.uni
-  drivers\drivers.c
-  drivers\drivers.h
+  drivers/driversStrings.uni
+  drivers/drivers.c
+  drivers/drivers.h
   
-  drvcfg\DrvcfgStrings.uni
-  drvcfg\drvcfg.c
-  drvcfg\drvcfg.h
+  drvcfg/DrvcfgStrings.uni
+  drvcfg/drvcfg.c
+  drvcfg/drvcfg.h
         
-  drvdiag\DrvdiagStrings.uni
-  drvdiag\drvdiag.c
-  drvdiag\drvdiag.h
+  drvdiag/DrvdiagStrings.uni
+  drvdiag/drvdiag.c
+  drvdiag/drvdiag.h
  
 
 
 [sources.ia32]
-  ver\ia32\ver32.c
-  Library\ia32\math.c
-  Library\ia32\initplat.c
+  ver/IA32/ver32.c
+  Library/IA32/math.c
+  Library/IA32/initplat.c
 
 
 [sources.ipf]
-  ver\ipf\ver64.c
-  Library\ipf\math.c
-  Library\ipf\initplat.c
-  Library\ipf\palproc.s
-  Library\ipf\salpal.c
+  ver/IPF/ver64.c
+  Library/IPF/math.c
+  Library/IPF/initplat.c
+  Library/IPF/palproc.s
+  Library/IPF/salpal.c
 
 [sources.EBC]
-  ver\ebc\verEbc.c
-  Library\EBC\math.c
-  Library\EBC\initplat.c
+  ver/ebc/verEbc.c
+  Library/Ebc/math.c
+  Library/Ebc/initplat.c
 
 [sources.x64]
-  ver\ia32\ver32.c
-  Library\ipf\math.c
-  Library\ia32\initplat.c
+  ver/IA32/ver32.c
+  Library/IPF/math.c
+  Library/IA32/initplat.c
+
+[sources.ARM]
+  ver/ia32/ver32.c
+  Library/IPF/math.c
+  Library/IA32/initplat.c
 
 [includes.common]
   .
-  .\Inc
-  .\ver
-  .\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
+  ./Inc
+  ./ver
+  ./Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
   $(DEST_DIR)
 
 [libraries.common]
@@ -229,4 +234,4 @@ COMPONENT_TYPE       = APPLICATION
 
 
 
- 
\ No newline at end of file
+ 
diff --git a/ShellFull.inf b/ShellFull.inf
index 832dc79..6cca7df 100644
--- a/ShellFull.inf
+++ b/ShellFull.inf
@@ -20,300 +20,305 @@
 #--*/
 
 [defines]
-BASE_NAME            = Shell
-FILE_GUID            = c57ad6b7-0515-40a8-9d21-551652854e37
+BASE_NAME            = ShellFull
+FILE_GUID            = 1903FB23-E526-4BDA-85E4-D68F2EEF0C20 
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  Library\ShellDebug.c
-  Library\DPath.c
-  Library\Init.c
-  Library\Lock.c
-  Library\Str.c
-  Library\IO.c
-  Library\Mem.c
-  Library\Misc.c
-  Library\Data.c
-  Library\RtData.c
-  Library\ShellEnvInt.c
-  Library\Handle.c
-  Library\FileIO.c
-  Library\ConsistMapping.c
-  Library\CRC.c
-  Library\Event.c
-  Library\Perf.c
-  Library\VarCheck.c
-  Library\HiiSupport.c
-
-  newshell\NshellStrings.uni
-  newshell\init.c
-  newshell\nshell.h
-  newshell\fakehii.c
+  Library/ShellDebug.c
+  Library/DPath.c
+  Library/Init.c
+  Library/Lock.c
+  Library/Str.c
+  Library/IO.c
+  Library/Mem.c
+  Library/Misc.c
+  Library/Data.c
+  Library/RtData.c
+  Library/ShellEnvInt.c
+  Library/Handle.c
+  Library/FileIO.c
+  Library/ConsistMapping.c
+  Library/CRC.c
+  Library/Event.c
+  Library/Perf.c
+  Library/VarCheck.c
+  Library/HiiSupport.c
+
+  newshell/NshellStrings.uni
+  newshell/init.c
+  newshell/nshell.h
+  newshell/fakehii.c
 
   ShCommonStrings.uni
-  shellenv\ShellenvHelpStrings.uni
-  shellenv\ShellenvStrings.uni
-  shellenv\ScriptCmdStrings.uni
-  shellenv\ConnectStrings.uni
-  shellenv\EchoStrings.uni
-  shellenv\HelpStrings.uni
-  shellenv\MapStrings.uni
-  shellenv\CdStrings.uni
-  shellenv\DhStrings.uni
+  shellenv/ShellenvHelpStrings.uni
+  shellenv/ShellenvStrings.uni
+  shellenv/ScriptCmdStrings.uni
+  shellenv/ConnectStrings.uni
+  shellenv/EchoStrings.uni
+  shellenv/HelpStrings.uni
+  shellenv/MapStrings.uni
+  shellenv/CdStrings.uni
+  shellenv/DhStrings.uni
   
-  shellenv\cmddisp.c
-  shellenv\connect.c
-  shellenv\data.c
-  shellenv\exec.c
-  shellenv\init.c
-  shellenv\protid.c
-  shellenv\var.c
-  shellenv\conio.c
-  shellenv\consoleproxy.c
-  shellenv\handle.c
-  shellenv\dprot.c
-  shellenv\map.c
-  shellenv\marg.c
-  shellenv\batch.c
-  shellenv\if.c
-  shellenv\goto.c
-  shellenv\echo.c
-  shellenv\pause.c
-  shellenv\for.c
-  shellenv\wait.c
-  shellenv\help.c
-  shellenv\shelle.h
-  shellenv\shellenvguid.h
-  shellenv\parsecmd.c
-  shellenv\shift.c
+  shellenv/cmddisp.c
+  shellenv/connect.c
+  shellenv/data.c
+  shellenv/exec.c
+  shellenv/init.c
+  shellenv/protid.c
+  shellenv/var.c
+  shellenv/conio.c
+  shellenv/consoleproxy.c
+  shellenv/handle.c
+  shellenv/dprot.c
+  shellenv/map.c
+  shellenv/marg.c
+  shellenv/batch.c
+  shellenv/if.c
+  shellenv/goto.c
+  shellenv/echo.c
+  shellenv/pause.c
+  shellenv/for.c
+  shellenv/wait.c
+  shellenv/help.c
+  shellenv/shelle.h
+  shellenv/shellenvguid.h
+  shellenv/parsecmd.c
+  shellenv/shift.c
  
-  unload\UnloadStrings.uni
-  unload\unload.c
+  unload/UnloadStrings.uni
+  unload/unload.c
   
-  attrib\AttribStrings.uni
-  attrib\attrib.c
-  attrib\attrib.h
+  attrib/AttribStrings.uni
+  attrib/attrib.c
+  attrib/attrib.h
 
-  cls\clsstrings.uni
-  cls\cls.c
+  cls/clsstrings.uni
+  cls/cls.c
 
-  cp\CpStrings.uni
-  cp\cp.h
-  cp\cp.c
+  cp/CpStrings.uni
+  cp/cp.h
+  cp/cp.c
  
-  date\DateStrings.uni
-  date\date.c
-  date\date.h
+  date/DateStrings.uni
+  date/date.c
+  date/date.h
 
-  load\LoadStrings.uni
-  load\load.c
-  load\load.h
+  load/LoadStrings.uni
+  load/load.c
+  load/load.h
 
-  ls\LsStrings.uni
-  ls\ls.h
-  ls\ls.c
+  ls/LsStrings.uni
+  ls/ls.h
+  ls/ls.c
 
-  mkdir\MkdirStrings.uni
-  mkdir\mkdir.c
-  mkdir\mkdir.h
+  mkdir/MkdirStrings.uni
+  mkdir/mkdir.c
+  mkdir/mkdir.h
 
-  mv\MvStrings.uni
-  mv\mv.c
-  mv\mv.h
+  mv/MvStrings.uni
+  mv/mv.c
+  mv/mv.h
  
-  reset\ResetStrings.uni
-  reset\reset.c
-  reset\reset.h
+  reset/ResetStrings.uni
+  reset/reset.c
+  reset/reset.h
   
-  rm\RmStrings.uni
-  rm\rm.h
-  rm\rm.c
+  rm/RmStrings.uni
+  rm/rm.h
+  rm/rm.c
   
-  type\TypeStrings.uni
-  type\type.c
-  type\type.h
-  time\TimeStrings.uni
-  time\time.c
-  time\time.h
-
-  touch\TouchStrings.uni
-  touch\touch.c
-  touch\touch.h
-
-  vol\VolStrings.uni
-  vol\vol.c
-  vol\vol.h
-
-  ver\VerStrings.uni
-  ver\ver.c
-  ver\ver.h
+  type/TypeStrings.uni
+  type/type.c
+  type/type.h
+  time/TimeStrings.uni
+  time/time.c
+  time/time.h
+
+  touch/TouchStrings.uni
+  touch/touch.c
+  touch/touch.h
+
+  vol/VolStrings.uni
+  vol/vol.c
+  vol/vol.h
+
+  ver/VerStrings.uni
+  ver/ver.c
+  ver/ver.h
   
-  drivers\driversStrings.uni
-  drivers\drivers.c
-  drivers\drivers.h
+  drivers/driversStrings.uni
+  drivers/drivers.c
+  drivers/drivers.h
   
-  drvcfg\DrvcfgStrings.uni
-  drvcfg\drvcfg.c
-  drvcfg\drvcfg.h
+  drvcfg/DrvcfgStrings.uni
+  drvcfg/drvcfg.c
+  drvcfg/drvcfg.h
         
-  drvdiag\DrvdiagStrings.uni
-  drvdiag\drvdiag.c
-  drvdiag\drvdiag.h
+  drvdiag/DrvdiagStrings.uni
+  drvdiag/drvdiag.c
+  drvdiag/drvdiag.h
   
-  comp\CompStrings.uni
-  comp\comp.c
+  comp/CompStrings.uni
+  comp/comp.c
   
-  dblk\dblkStrings.uni
-  dblk\dblk.c
-  dblk\efidump.c
+  dblk/dblkStrings.uni
+  dblk/dblk.c
+  dblk/efidump.c
  
-  devices\DevicesStrings.uni
-  devices\devices.c
+  devices/DevicesStrings.uni
+  devices/devices.c
   
-  devicetree\DevicetreeStrings.uni
-  devicetree\devicetree.c
+  devicetree/DevicetreeStrings.uni
+  devicetree/devicetree.c
   
-  dmem\MemStrings.uni
-  dmem\DebugStrings.uni  
-  dmem\mem.c
-  dmem\MemCommonPart.c
-  dmem\efidump.c  
+  dmem/MemStrings.uni
+  dmem/DebugStrings.uni  
+  dmem/mem.c
+  dmem/MemCommonPart.c
+  dmem/efidump.c  
   
-  dmpstore\DmpstoreStrings.uni
-  dmpstore\dmpstore.c
+  dmpstore/DmpstoreStrings.uni
+  dmpstore/dmpstore.c
   
-  edit\EditStrings.uni
-  edit\main.c
-  edit\libFileBuffer.c
-  edit\libEditor.c
-  edit\libTitleBar.c
-  edit\libStatusBar.c
-  edit\libInputBar.c
-  edit\libMenuBar.c
-  edit\libMisc.c 
+  edit/EditStrings.uni
+  edit/main.c
+  edit/libFileBuffer.c
+  edit/libEditor.c
+  edit/libTitleBar.c
+  edit/libStatusBar.c
+  edit/libInputBar.c
+  edit/libMenuBar.c
+  edit/libMisc.c 
   
-  eficompress\CompressStrings.uni
-  eficompress\compressMain.c
-  eficompress\compress.c   
+  eficompress/CompressStrings.uni
+  eficompress/compressMain.c
+  eficompress/compress.c   
   
-  efidecompress\DecompressStrings.uni
-  efidecompress\decompress.c
+  efidecompress/DecompressStrings.uni
+  efidecompress/decompress.c
   
-  err\ErrStrings.uni
-  err\err.c
+  err/ErrStrings.uni
+  err/err.c
   
-  guid\GuidStrings.uni
-  guid\guid.c
+  guid/GuidStrings.uni
+  guid/guid.c
   
-  hexedit\HexeditStrings.uni
-  hexedit\main.c
-  hexedit\libBufferImage.c
-  hexedit\libFileImage.c
-  hexedit\libDiskImage.c
-  hexedit\libMemImage.c
-  hexedit\libEditor.c
-  hexedit\libTitleBar.c
-  hexedit\libStatusBar.c
-  hexedit\libInputBar.c
-  hexedit\libMenuBar.c
-  hexedit\libClipBoard.c
-  hexedit\libMisc.c
-
-  IfConfig\IfConfigStrings.uni
-  IfConfig\IfConfig.c
-  IfConfig\IfConfig.h
-  IfConfig\ShellNetHelper.c
-
-  ipconfig\IpConfigStrings.uni
-  ipconfig\IpConfig.c
+  hexedit/HexeditStrings.uni
+  hexedit/main.c
+  hexedit/libBufferImage.c
+  hexedit/libFileImage.c
+  hexedit/libDiskImage.c
+  hexedit/libMemImage.c
+  hexedit/libEditor.c
+  hexedit/libTitleBar.c
+  hexedit/libStatusBar.c
+  hexedit/libInputBar.c
+  hexedit/libMenuBar.c
+  hexedit/libClipBoard.c
+  hexedit/libMisc.c
+
+  IfConfig/IfConfigStrings.uni
+  IfConfig/IfConfig.c
+  IfConfig/IfConfig.h
+  IfConfig/ShellNetHelper.c
+
+  IpConfig/IpConfigStrings.uni
+  IpConfig/IpConfig.c
   
-  loadpcirom\LoadPciRomStrings.uni
-  loadpcirom\LoadPciRom.c
+  loadpcirom/LoadPciRomStrings.uni
+  loadpcirom/LoadPciRom.c
   
-  mem\MemStrings.uni
-  mem\DebugStrings.uni  
-  mem\mm.c
-  mem\MemCommonPart.c
-  mem\efidump.c  
+  mem/MemStrings.uni
+  mem/DebugStrings.uni  
+  mem/mm.c
+  mem/MemCommonPart.c
+  mem/efidump.c  
   
-  memmap\memmapStrings.uni
-  memmap\memmap.c
+  memmap/memmapStrings.uni
+  memmap/memmap.c
   
-  mm\MmStrings.uni
-  mm\mm.c
+  mm/MmStrings.uni
+  mm/mm.c
   
-  mode\ModeStrings.uni
-  mode\mode.c
+  mode/ModeStrings.uni
+  mode/mode.c
   
-  mount\MountStrings.uni
-  mount\mount.c
+  mount/MountStrings.uni
+  mount/mount.c
   
-  openinfo\OPeninfoStrings.uni
-  openinfo\openinfo.c
+  openinfo/OPeninfoStrings.uni
+  openinfo/openinfo.c
 
-  Ping\PingStrings.uni
-  Ping\Ping.c
+  Ping/PingStrings.uni
+  Ping/Ping.c
 
-  pci\PciStrings.uni
-  pci\pci.c
-  pci\pci_class.c
+  pci/PciStrings.uni
+  pci/pci.c
+  pci/pci_class.c
   
-  sermode\SermodeStrings.uni
-  sermode\sermode.c
+  sermode/SermodeStrings.uni
+  sermode/sermode.c
   
-  smbiosview\SmBiosViewStrings.uni
-  smbiosview\QueryTable.c
-  smbiosview\EventLogInfo.c
-  smbiosview\PrintInfo.c
-  smbiosview\LibSmbiosView.c
-  smbiosview\smbiosview.c
-  smbiosview\smbios.c
+  smbiosview/SmBiosViewStrings.uni
+  smbiosview/QueryTable.c
+  smbiosview/EventLogInfo.c
+  smbiosview/PrintInfo.c
+  smbiosview/LibSmbiosView.c
+  smbiosview/smbiosview.c
+  smbiosview/smbios.c
   
-  stall\stallStrings.uni
-  stall\stall.c
+  stall/stallStrings.uni
+  stall/stall.c
   
-  telnetmgmt\TelnetMgmtStrings.uni
-  telnetmgmt\TelnetMgmt.c
+  telnetmgmt/TelnetMgmtStrings.uni
+  telnetmgmt/TelnetMgmt.c
   
-  tzone\TZoneStrings.uni
-  tzone\tzone.c
+  tzone/TZoneStrings.uni
+  tzone/tzone.c
 
 [sources.ia32]
-  ver\ia32\ver32.c
-  Library\ia32\math.c
-  Library\ia32\initplat.c
+  ver/IA32/ver32.c
+  Library/IA32/math.c
+  Library/IA32/initplat.c
 
 [sources.ipf]
-  ver\ipf\ver64.c
-  Library\ipf\math.c
-  Library\ipf\initplat.c
-  Library\ipf\palproc.s
-  Library\ipf\salpal.c
+  ver/IPF/ver64.c
+  Library/IPF/math.c
+  Library/IPF/initplat.c
+  Library/IPF/palproc.s
+  Library/IPF/salpal.c
 
 [sources.EBC]
-  ver\ebc\verEbc.c
-  Library\EBC\math.c
-  Library\EBC\initplat.c
+  ver/ebc/verEbc.c
+  Library/Ebc/math.c
+  Library/Ebc/initplat.c
 
 [sources.x64]
-  ver\ia32\ver32.c
-  Library\ipf\math.c
-  Library\ia32\initplat.c
+  ver/IA32/ver32.c
+  Library/IPF/math.c
+  Library/IA32/initplat.c
+
+[sources.ARM]
+  ver/ia32/ver32.c
+  Library/IPF/math.c
+  Library/IA32/initplat.c
 
 [includes.common]
   .
-  .\Inc
-  .\ver
-  .\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(EDK_SOURCE)\Foundation\Library\Dxe\Include
+  ./Inc
+  ./ver
+  ./Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(EDK_SOURCE)/Foundation/Library/Dxe/Include
   $(DEST_DIR)
 
 [libraries.common]
@@ -353,4 +358,4 @@ COMPONENT_TYPE       = APPLICATION
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /DSTRING_DEFINES_FILE=\"$(BASE_NAME)StrDefs.h\"
 
 
- 
\ No newline at end of file
+ 
diff --git a/SmbiosView/EventLogInfo.c b/SmbiosView/EventLogInfo.c
index 7f9b726..33e3549 100644
--- a/SmbiosView/EventLogInfo.c
+++ b/SmbiosView/EventLogInfo.c
@@ -25,7 +25,7 @@ Revision History
 #include "PrintInfo.h"
 #include "QueryTable.h"
 #include "EventLogInfo.h"
-#include "smbios.h"
+#include "Smbios.h"
 #include STRING_DEFINES_FILE
 
 VOID
diff --git a/SmbiosView/LibSmbiosView.c b/SmbiosView/LibSmbiosView.c
index d31ed01..0fb51d5 100644
--- a/SmbiosView/LibSmbiosView.c
+++ b/SmbiosView/LibSmbiosView.c
@@ -22,10 +22,10 @@ Revision History
 --*/
 
 #include "EfiShellLib.h"
-#include "LIbSmbios.h"
+#include "LibSmbios.h"
 #include "LibSmbiosView.h"
 #include "smbiosview.h"
-#include "smbios.h"
+#include "Smbios.h"
 #include STRING_DEFINES_FILE
 
 STATIC UINT8                    mInit         = 0;
@@ -62,7 +62,7 @@ Returns:
   //
   // Get SMBIOS table from System Configure table
   //
-  Status = LibGetSystemConfigurationTable (&gEfiSmbiosTableGuid, &mSmbiosTable);
+  Status = LibGetSystemConfigurationTable (&gEfiSmbiosTableGuid, (VOID**)&mSmbiosTable);
 
   if (mSmbiosTable == NULL) {
     PrintToken (STRING_TOKEN (STR_SMBIOSVIEW_LIBSMBIOSVIEW_CANNOT_GET_TABLE), HiiHandle);
diff --git a/SmbiosView/PrintInfo.c b/SmbiosView/PrintInfo.c
index ff1f63c..1789ef6 100644
--- a/SmbiosView/PrintInfo.c
+++ b/SmbiosView/PrintInfo.c
@@ -26,7 +26,7 @@ Revision History
 #include "LibSmbiosView.h"
 #include "QueryTable.h"
 #include "EventLogInfo.h"
-#include "smbios.h"
+#include "Smbios.h"
 #include STRING_DEFINES_FILE
 
 //
diff --git a/SmbiosView/QueryTable.c b/SmbiosView/QueryTable.c
index 4570938..1d9d60f 100644
--- a/SmbiosView/QueryTable.c
+++ b/SmbiosView/QueryTable.c
@@ -23,7 +23,7 @@ Revision History
 #include "EfiShellLib.h"
 #include "QueryTable.h"
 #include "PrintInfo.h"
-#include "smbios.h"
+#include "Smbios.h"
 
 #include STRING_DEFINES_FILE
 
diff --git a/SmbiosView/Smbiosview.inf b/SmbiosView/Smbiosview.inf
index f9e8c0b..d65b676 100644
--- a/SmbiosView/Smbiosview.inf
+++ b/SmbiosView/Smbiosview.inf
@@ -25,7 +25,7 @@ FILE_GUID            = 0F4C0280-B581-4940-AF19-D0CB5559CC95
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   SmBiosViewStrings.uni
   QueryTable.c
   QueryTable.h
@@ -43,19 +43,19 @@ COMPONENT_TYPE       = APPLICATION
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
-  $(EFI_SOURCE)\Application\Shell\Inc
-  $(EFI_SOURCE)\Application\Shell\Library
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
+  $(EFI_SOURCE)/Applicatio./Shels/Inc
+  $(EFI_SOURCE)/Applicatio./Shels/Library
 
 [libraries.common]  
   EfiShellLib
diff --git a/SmbiosView/smbiosview.c b/SmbiosView/smbiosview.c
index 13b4fb7..397ed04 100644
--- a/SmbiosView/smbiosview.c
+++ b/SmbiosView/smbiosview.c
@@ -26,7 +26,7 @@ Revision History
 #include "smbiosview.h"
 #include "PrintInfo.h"
 #include "QueryTable.h"
-#include "smbios.h"
+#include "Smbios.h"
 
 extern UINT8                STRING_ARRAY_NAME[];
 
diff --git a/TelnetMgmt/TelnetMgmt.c b/TelnetMgmt/TelnetMgmt.c
index 9d779df..5e097c9 100644
--- a/TelnetMgmt/TelnetMgmt.c
+++ b/TelnetMgmt/TelnetMgmt.c
@@ -32,7 +32,7 @@ extern UINT8    STRING_ARRAY_NAME[];
 //
 #include STRING_DEFINES_FILE
 
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiTelnetMgmtGuid = EFI_TELNETMGMT_GUID;
 EFI_GUID        mEfiTelnetServerGuid = EFI_TELNET_SERVER_PROTOCOL_GUID;
 SHELL_VAR_CHECK_ITEM        TelnetmgmtCheckList[] = {
diff --git a/TelnetMgmt/TelnetMgmt.inf b/TelnetMgmt/TelnetMgmt.inf
index ad8b8bd..6b0b571 100644
--- a/TelnetMgmt/TelnetMgmt.inf
+++ b/TelnetMgmt/TelnetMgmt.inf
@@ -25,23 +25,23 @@ FILE_GUID            = 0C6282F4-F575-469d-BD55-7693AAC9D812
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   TelnetMgmtStrings.uni
   TelnetMgmt.c
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/attrib/attrib.c b/attrib/attrib.c
index 3599d6d..a597d9c 100644
--- a/attrib/attrib.c
+++ b/attrib/attrib.c
@@ -57,7 +57,7 @@ AttribFile (
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiAttribGuid = EFI_ATTRIB_GUID;
 SHELL_VAR_CHECK_ITEM    AttribCheckList[] = {
   {
@@ -438,7 +438,7 @@ Returns:
     //
     Info = Arg->Info;
     if (Add || Remove) {
-      Info->Attribute = Info->Attribute & (~Remove) | Add;
+      Info->Attribute = (Info->Attribute & (~Remove)) | Add;
       Status = Arg->Handle->SetInfo (
                               Arg->Handle,
                               &gEfiFileInfoGuid,
diff --git a/attrib/attrib.inf b/attrib/attrib.inf
index 38cc094..a96ae55 100644
--- a/attrib/attrib.inf
+++ b/attrib/attrib.inf
@@ -41,24 +41,24 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
    AttribStrings.uni      
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    attrib.c             
    attrib.h             
     
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/cls/cls.c b/cls/cls.c
index 572cc82..c1f4440 100644
--- a/cls/cls.c
+++ b/cls/cls.c
@@ -30,7 +30,7 @@ extern UINT8    STRING_ARRAY_NAME[];
 //
 #include STRING_DEFINES_FILE
 
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiClsGuid = EFI_CLS_GUID;
 SHELL_VAR_CHECK_ITEM    ClsCheckList[] = {
   {
diff --git a/cls/cls.inf b/cls/cls.inf
index 1e5ef66..7d9e924 100644
--- a/cls/cls.inf
+++ b/cls/cls.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    ClsStrings.uni
    Cls.c
    Cls.h 
                                           
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/comp/comp.inf b/comp/comp.inf
index 7a525e4..1da14bc 100644
--- a/comp/comp.inf
+++ b/comp/comp.inf
@@ -28,21 +28,21 @@ COMPONENT_TYPE       = APPLICATION
 CompStrings.uni
 comp.c
 comp.h
-..\ShCommonStrings.uni
+../ShCommonStrings.uni
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/cp/cp.c b/cp/cp.c
index 25ac3cf..d79ed13 100644
--- a/cp/cp.c
+++ b/cp/cp.c
@@ -578,7 +578,7 @@ Returns:
     //
     if (SrcArg->Status == EFI_SUCCESS &&
         (SrcArg->Info->Attribute & EFI_FILE_DIRECTORY) &&
-        (DstArg->Status == EFI_SUCCESS && (DstArg->Info->Attribute & EFI_FILE_DIRECTORY) || DstMustDir && DstHandle)
+        (DstArg->Status == EFI_SUCCESS && ((DstArg->Info->Attribute & EFI_FILE_DIRECTORY) || (DstMustDir && DstHandle)))
         ) {
       if (StrCmp (SrcFilePath, DstFilePath) == 0) {
         PrintToken (STRING_TOKEN (STR_CP_CANNOT_COPY_ITSELF), HiiCpyHandle, L"cp/copy", SrcArg->FullName);
@@ -592,7 +592,7 @@ Returns:
     // we need to compose a full name of dir\file for the source
     //
     if (SrcArg->Status == EFI_SUCCESS &&
-      (DstArg->Status == EFI_SUCCESS && (DstArg->Info->Attribute & EFI_FILE_DIRECTORY) || DstMustDir && DstHandle)) {
+      (DstArg->Status == EFI_SUCCESS && ((DstArg->Info->Attribute & EFI_FILE_DIRECTORY) || (DstMustDir && DstHandle)))) {
       if (DstFullName) {
         FreePool (DstFullName);
       }
@@ -1789,7 +1789,7 @@ Returns:
     //
     if (SrcArg->Status == EFI_SUCCESS &&
         !(SrcArg->Info->Attribute & EFI_FILE_DIRECTORY) &&
-        (DstArg->Status == EFI_SUCCESS && (DstArg->Info->Attribute & EFI_FILE_DIRECTORY) || DstDir && DstHandle)
+        (DstArg->Status == EFI_SUCCESS && ((DstArg->Info->Attribute & EFI_FILE_DIRECTORY) || (DstDir && DstHandle)))
         ) {
       if (DstFullName) {
         FreePool (DstFullName);
diff --git a/cp/cp.inf b/cp/cp.inf
index 714c7bb..7303b2f 100644
--- a/cp/cp.inf
+++ b/cp/cp.inf
@@ -41,23 +41,23 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
   CpStrings.uni
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   cp.h
   cp.c
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/date/date.c b/date/date.c
index fb2f765..ff44740 100644
--- a/date/date.c
+++ b/date/date.c
@@ -53,8 +53,8 @@ STATIC
 BOOLEAN
 GetNumber (
   IN      CHAR16  *Str,
-  IN OUT  INTN    *Position,
-  IN OUT  INTN    *Number,
+  IN OUT  UINTN   *Position,
+  IN OUT  UINTN   *Number,
   IN BOOLEAN      EndNum
   );
 
@@ -330,8 +330,8 @@ STATIC
 BOOLEAN
 GetNumber (
   IN      CHAR16    *Str,
-  IN OUT  INTN      *Position,
-  IN OUT  INTN      *Number,
+  IN OUT  UINTN     *Position,
+  IN OUT  UINTN     *Number,
   IN BOOLEAN        EndNum
   )
 {
diff --git a/date/date.inf b/date/date.inf
index 2c40f72..18cf117 100644
--- a/date/date.inf
+++ b/date/date.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    DateStrings.uni
    Date.c
    Date.h 
                                           
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/dblk/dblk.inf b/dblk/dblk.inf
index f15392c..3324eb7 100644
--- a/dblk/dblk.inf
+++ b/dblk/dblk.inf
@@ -26,23 +26,23 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
   DblkStrings.uni
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   dblk.c
   efidump.c
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/dblk/efidump.c b/dblk/efidump.c
index 7fc0337..758326e 100644
--- a/dblk/efidump.c
+++ b/dblk/efidump.c
@@ -24,7 +24,7 @@ Revision History
 --*/
 
 #include "dblk.h"
-#include "Efipart.h"
+#include "EfiPart.h"
 #include "EfiShellLib.h"
 
 #include STRING_DEFINES_FILE
@@ -352,8 +352,8 @@ DblkDumpSystemTable (
     PrintToken (STRING_TOKEN (STR_DEBUG_STD_ERROR_ON), HiiDblkHandle, LibDevicePathToStr (DevicePath));
   }
 
-  PrintToken (STRING_TOKEN (STR_DEBUG_RUNTIME_SERVICES), HiiDblkHandle, (UINT64) Tbl.Sys->RuntimeServices);
-  PrintToken (STRING_TOKEN (STR_DEBUG_BOOT_SERVICES), HiiDblkHandle, (UINT64) Tbl.Sys->BootServices);
+  PrintToken (STRING_TOKEN (STR_DEBUG_RUNTIME_SERVICES), HiiDblkHandle, (UINT64)(UINTN) Tbl.Sys->RuntimeServices);
+  PrintToken (STRING_TOKEN (STR_DEBUG_BOOT_SERVICES), HiiDblkHandle, (UINT64)(UINTN) Tbl.Sys->BootServices);
 
   EFI64_CODE (
     Status = LibGetSystemConfigurationTable(&gEfiSalSystemTableGuid, &SalSystemTable);
@@ -364,22 +364,22 @@ DblkDumpSystemTable (
 
   Status = LibGetSystemConfigurationTable (&gEfiAcpiTableGuid, &AcpiTable);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_ACPI_TABLE), HiiDblkHandle, (UINT64) AcpiTable);
+    PrintToken (STRING_TOKEN (STR_DEBUG_ACPI_TABLE), HiiDblkHandle, (UINT64)(UINTN) AcpiTable);
   }
 
   Status = LibGetSystemConfigurationTable (&gEfiAcpi20TableGuid, &Acpi20Table);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_APCI_2_TABLE), HiiDblkHandle, (UINT64) Acpi20Table);
+    PrintToken (STRING_TOKEN (STR_DEBUG_APCI_2_TABLE), HiiDblkHandle, (UINT64)(UINTN) Acpi20Table);
   }
 
   Status = LibGetSystemConfigurationTable (&gEfiMpsTableGuid, &MpsTable);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_MPS_TABLE), HiiDblkHandle, (UINT64) MpsTable);
+    PrintToken (STRING_TOKEN (STR_DEBUG_MPS_TABLE), HiiDblkHandle, (UINT64)(UINTN) MpsTable);
   }
 
   Status = LibGetSystemConfigurationTable (&gEfiSmbiosTableGuid, &SMBIOSTable);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_SMBIOS_TABLE), HiiDblkHandle, (UINT64) SMBIOSTable);
+    PrintToken (STRING_TOKEN (STR_DEBUG_SMBIOS_TABLE), HiiDblkHandle, (UINT64)(UINTN) SMBIOSTable);
   }
 }
 
diff --git a/devices/devices.c b/devices/devices.c
index bcc8beb..56808a4 100644
--- a/devices/devices.c
+++ b/devices/devices.c
@@ -36,7 +36,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiDevicesGuid = EFI_DEVICES_GUID;
 SHELL_VAR_CHECK_ITEM    DevicesCheckList[] = {
   {
diff --git a/devices/devices.inf b/devices/devices.inf
index c380f7d..d25b7ab 100644
--- a/devices/devices.inf
+++ b/devices/devices.inf
@@ -41,23 +41,23 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
   DevicesStrings.uni
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   devices.c
   devices.h
     
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/dmem/MemCommonPart.c b/dmem/MemCommonPart.c
index 377da17..0b56a02 100644
--- a/dmem/MemCommonPart.c
+++ b/dmem/MemCommonPart.c
@@ -148,7 +148,7 @@ Return:
     return EFI_SUCCESS;
   }
 
-  Address = (AddressStr) ? Xtoi (AddressStr) : (UINT64) SystemTable;
+  Address = (AddressStr) ? Xtoi (AddressStr) : (UINT64)(UINTN) SystemTable;
   Size    = (SizeStr) ? Xtoi (SizeStr) : 512;
 
   //
@@ -156,7 +156,7 @@ Return:
   //
   PrintToken (STRING_TOKEN (STR_DMEM_MEMORY_ADDR), HiiDmemHandle, 2 * sizeof (UINTN), Address, Size);
   if (MMIo) {
-    Status = BS->LocateProtocol (&gEfiPciRootBridgeIoProtocolGuid, NULL, &PciRootBridgeIo);
+    Status = BS->LocateProtocol (&gEfiPciRootBridgeIoProtocolGuid, NULL, (VOID**)&PciRootBridgeIo);
     if (EFI_ERROR (Status)) {
       PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_LOC_PROT_ERR_EX), HiiDmemHandle, L"dmem", L"PciRootBridgeIo");
       return Status;
@@ -233,7 +233,7 @@ Return:
   //
   MMIo                  = FALSE;
   AddressStr            = SizeStr = NULL;
-  Address               = (UINT64) SystemTable;
+  Address               = (UINT64)(UINTN) SystemTable;
   Size                  = 512;
   RetCode               = LibCheckVariables (SI, DmemCheckList, &ChkPck, &Useful);
   if (VarCheckOk != RetCode) {
@@ -316,7 +316,7 @@ Return:
   //
   PrintToken (STRING_TOKEN (STR_DMEM_NEW_MEMORY_ADDR), HiiDmemHandle, 2 * sizeof (UINTN), Address, Size);
   if (MMIo) {
-    Status = BS->LocateProtocol (&gEfiPciRootBridgeIoProtocolGuid, NULL, &PciRootBridgeIo);
+    Status = BS->LocateProtocol (&gEfiPciRootBridgeIoProtocolGuid, NULL, (VOID**)&PciRootBridgeIo);
     if (EFI_ERROR (Status)) {
       PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_LOC_PROT_ERR_EX), HiiDmemHandle, L"dmem", L"PciRootBridgeIo");
       return Status;
diff --git a/dmem/dmem.inf b/dmem/dmem.inf
index ca0dcaf..3360314 100644
--- a/dmem/dmem.inf
+++ b/dmem/dmem.inf
@@ -25,7 +25,7 @@ FILE_GUID            = 644E259E-FF88-4d31-8092-B99D8777F1C4
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   MemStrings.uni
   DebugStrings.uni  
   mem.c
@@ -34,17 +34,17 @@ COMPONENT_TYPE       = APPLICATION
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/dmem/efidump.c b/dmem/efidump.c
index 051f6a0..25bd880 100644
--- a/dmem/efidump.c
+++ b/dmem/efidump.c
@@ -24,7 +24,7 @@ Revision History
 --*/
 
 #include "debug.h"
-#include "Efipart.h"
+#include "EfiPart.h"
 #include "EfiShellLib.h"
 
 #include STRING_DEFINES_FILE
@@ -352,8 +352,8 @@ DumpSystemTable (
     PrintToken (STRING_TOKEN (STR_DEBUG_STD_ERROR_ON), HiiDmemHandle, LibDevicePathToStr (DevicePath));
   }
 
-  PrintToken (STRING_TOKEN (STR_DEBUG_RUNTIME_SERVICES), HiiDmemHandle, (UINT64) Tbl.Sys->RuntimeServices);
-  PrintToken (STRING_TOKEN (STR_DEBUG_BOOT_SERVICES), HiiDmemHandle, (UINT64) Tbl.Sys->BootServices);
+  PrintToken (STRING_TOKEN (STR_DEBUG_RUNTIME_SERVICES), HiiDmemHandle, (UINT64)(UINTN) Tbl.Sys->RuntimeServices);
+  PrintToken (STRING_TOKEN (STR_DEBUG_BOOT_SERVICES), HiiDmemHandle, (UINT64)(UINTN) Tbl.Sys->BootServices);
 
   EFI64_CODE (
     Status = LibGetSystemConfigurationTable(&gEfiSalSystemTableGuid, &SalSystemTable);
@@ -364,22 +364,22 @@ DumpSystemTable (
   
   Status = LibGetSystemConfigurationTable (&gEfiAcpiTableGuid, &AcpiTable);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_ACPI_TABLE), HiiDmemHandle, (UINT64) AcpiTable);
+    PrintToken (STRING_TOKEN (STR_DEBUG_ACPI_TABLE), HiiDmemHandle, (UINT64)(UINTN) AcpiTable);
   }
 
   Status = LibGetSystemConfigurationTable (&gEfiAcpi20TableGuid, &Acpi20Table);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_APCI_2_TABLE), HiiDmemHandle, (UINT64) Acpi20Table);
+    PrintToken (STRING_TOKEN (STR_DEBUG_APCI_2_TABLE), HiiDmemHandle, (UINT64)(UINTN) Acpi20Table);
   }
 
   Status = LibGetSystemConfigurationTable (&gEfiMpsTableGuid, &MpsTable);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_MPS_TABLE), HiiDmemHandle, (UINT64) MpsTable);
+    PrintToken (STRING_TOKEN (STR_DEBUG_MPS_TABLE), HiiDmemHandle, (UINT64)(UINTN) MpsTable);
   }
 
   Status = LibGetSystemConfigurationTable (&gEfiSmbiosTableGuid, &SMBIOSTable);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_SMBIOS_TABLE), HiiDmemHandle, (UINT64) SMBIOSTable);
+    PrintToken (STRING_TOKEN (STR_DEBUG_SMBIOS_TABLE), HiiDmemHandle, (UINT64)(UINTN) SMBIOSTable);
   }
 }
 
diff --git a/dmpstore/dmpstore.c b/dmpstore/dmpstore.c
index 403e190..4cf7386 100644
--- a/dmpstore/dmpstore.c
+++ b/dmpstore/dmpstore.c
@@ -102,7 +102,7 @@ SetFileVariable (
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiDmpstoreGuid = EFI_DMPSTORE_GUID;
 SHELL_VAR_CHECK_ITEM    DmpstoreCheckList[] = {
   {
diff --git a/dmpstore/dmpstore.inf b/dmpstore/dmpstore.inf
index f380759..923c24a 100644
--- a/dmpstore/dmpstore.inf
+++ b/dmpstore/dmpstore.inf
@@ -25,24 +25,24 @@ FILE_GUID            = 7185D15A-A0AE-4dd1-A58F-C6EAD28EC9A8
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   DmpstoreStrings.uni
   dmpstore.c
   dmpstore.h
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/drivers/drivers.c b/drivers/drivers.c
index 0c6cfc0..50629ab 100644
--- a/drivers/drivers.c
+++ b/drivers/drivers.c
@@ -43,7 +43,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiDriversGuid = EFI_DRIVERS_GUID;
 SHELL_VAR_CHECK_ITEM    DriversCheckList[] = {
   {
diff --git a/drivers/drivers.inf b/drivers/drivers.inf
index befa6cd..e4331cf 100644
--- a/drivers/drivers.inf
+++ b/drivers/drivers.inf
@@ -40,7 +40,7 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   DriversStrings.uni
   drivers.c
   drivers.h
@@ -48,17 +48,17 @@ COMPONENT_TYPE       = APPLICATION
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/drvcfg/drvcfg.c b/drvcfg/drvcfg.c
index b604432..1190081 100644
--- a/drvcfg/drvcfg.c
+++ b/drvcfg/drvcfg.c
@@ -38,7 +38,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiDrvcfgGuid = EFI_DRVCFG_GUID;
 SHELL_VAR_CHECK_ITEM  DrvcfgCheckList[] = {
   {
diff --git a/drvcfg/drvcfg.inf b/drvcfg/drvcfg.inf
index 71b2778..86e80dc 100644
--- a/drvcfg/drvcfg.inf
+++ b/drvcfg/drvcfg.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   DrvcfgStrings.uni
   drvcfg.c
   drvcfg.h
     
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/drvdiag/drvdiag.c b/drvdiag/drvdiag.c
index 3a9435c..4c20f09 100644
--- a/drvdiag/drvdiag.c
+++ b/drvdiag/drvdiag.c
@@ -41,7 +41,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiDrvdiagGuid = EFI_DRVDIAG_GUID;
 SHELL_VAR_CHECK_ITEM  DrvdiagCheckList[] = {
   {
diff --git a/drvdiag/drvdiag.inf b/drvdiag/drvdiag.inf
index f27c238..493de6e 100644
--- a/drvdiag/drvdiag.inf
+++ b/drvdiag/drvdiag.inf
@@ -40,7 +40,7 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   DrvdiagStrings.uni
   drvdiag.c
   drvdiag.h
@@ -48,17 +48,17 @@ COMPONENT_TYPE       = APPLICATION
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/edit/edit.inf b/edit/edit.inf
index 0a48e87..5eba5a4 100644
--- a/edit/edit.inf
+++ b/edit/edit.inf
@@ -25,7 +25,7 @@ FILE_GUID            = 51A60577-F1F6-444a-A372-244BED272023
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
- ..\ShCommonStrings.uni
+ ../ShCommonStrings.uni
  EditStrings.uni
  editor.h
  editortype.h
@@ -41,17 +41,17 @@ COMPONENT_TYPE       = APPLICATION
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/edit/editor.h b/edit/editor.h
index c18db6a..2dd106b 100644
--- a/edit/editor.h
+++ b/edit/editor.h
@@ -33,7 +33,7 @@ Abstract:
 #include "libstatusbar.h"
 #include "libinputbar.h"
 #include "libmenubar.h"
-#include "libmisc.h"
+#include "libMisc.h"
 //
 // This is the generated header file which includes whatever needs to be exported (strings + IFR)
 //
@@ -43,7 +43,7 @@ extern EFI_EDITOR_GLOBAL_EDITOR MainEditor;
 extern BOOLEAN                  EditorFirst;
 extern BOOLEAN                  EditorExit;
 
-extern EFI_HII_HANDLE           HiiHandle;
+extern EFI_HII_HANDLE           gEditHiiHandle;
 #if (EFI_SPECIFICATION_VERSION < 0x0002000A)
 extern EFI_HII_PROTOCOL         *Hii;
 #endif
diff --git a/edit/editortype.h b/edit/editortype.h
index 674f120..df800dc 100644
--- a/edit/editortype.h
+++ b/edit/editortype.h
@@ -28,7 +28,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #define EDITOR_NAME           L"EFI Editor\0"
 #define EDITOR_VERSION        L"0.99\0"
 
-#define EFI_EDITOR_LINE_LIST  'eell'
+#define EFI_EDITOR_LINE_LIST  EFI_SIGNATURE_32 ('e','e','l','l')
 
 #define INSERT_MODE_STR       L"INS"
 #define OVERWR_MODE_STR       L"OVR"
diff --git a/edit/libEditor.c b/edit/libEditor.c
index b39a2f0..7f32ce1 100644
--- a/edit/libEditor.c
+++ b/edit/libEditor.c
@@ -123,7 +123,7 @@ MainEditorInit (
   Status = BS->HandleProtocol (
                 In,
                 &gEfiSimplePointerProtocolGuid,
-                &MainEditor.MouseInterface
+                (VOID**)&MainEditor.MouseInterface
                 );
   if (EFI_ERROR (Status)) {
     //
@@ -146,7 +146,7 @@ MainEditorInit (
         Status = BS->HandleProtocol (
                       HandleBuffer[Index],
                       &gEfiSimplePointerProtocolGuid,
-                      &MainEditor.MouseInterface
+                      (VOID**)&MainEditor.MouseInterface
                       );
         if (!EFI_ERROR (Status)) {
           break;
@@ -169,31 +169,31 @@ MainEditorInit (
   //
   Status = MainTitleBarInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_TITLEBAR), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_TITLEBAR), gEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
 
   Status = MainMenuBarInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_MAINMENU), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_MAINMENU), gEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
 
   Status = MainStatusBarInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_STATUSBAR), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_STATUSBAR), gEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
 
   Status = MainInputBarInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_INPUTBAR), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_INPUTBAR), gEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
 
   Status = FileBufferInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_FILEBUFFER), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_FILEBUFFER), gEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
   //
@@ -234,27 +234,27 @@ MainEditorCleanup (
   //
   Status = MainTitleBarCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_TILEBAR_CLEANUP), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_TILEBAR_CLEANUP), gEditHiiHandle);
   }
 
   Status = MainMenuBarCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_MENUBAR_CLEANUP), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_MENUBAR_CLEANUP), gEditHiiHandle);
   }
 
   Status = MainStatusBarCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_STATUSBAR_CLEANUP), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_STATUSBAR_CLEANUP), gEditHiiHandle);
   }
 
   Status = MainInputBarCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_INPUTBAR_CLEANUP), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_INPUTBAR_CLEANUP), gEditHiiHandle);
   }
 
   Status = FileBufferCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_FILEBUFFER_CLEANUP), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_LIBEDITOR_FILEBUFFER_CLEANUP), gEditHiiHandle);
   }
   //
   // restore old mode
diff --git a/edit/libInputBar.c b/edit/libInputBar.c
index 0ec6858..ebd3864 100644
--- a/edit/libInputBar.c
+++ b/edit/libInputBar.c
@@ -173,7 +173,7 @@ Returns:
   EditorClearLine (INPUT_BAR_LOCATION);
 
   Out->SetCursorPosition (Out, 0, INPUT_BAR_LOCATION - 1);
-  PrintToken (STRING_TOKEN (STR_EDIT_LIBINPUTBAR_MAININPUTBAR), HiiHandle, MainInputBar.Prompt);
+  PrintToken (STRING_TOKEN (STR_EDIT_LIBINPUTBAR_MAININPUTBAR), gEditHiiHandle, MainInputBar.Prompt);
 
   //
   // that's the maximum input length that can be displayed on screen
diff --git a/edit/libMenuBar.c b/edit/libMenuBar.c
index 32fef4e..f536d76 100644
--- a/edit/libMenuBar.c
+++ b/edit/libMenuBar.c
@@ -220,9 +220,9 @@ MainMenuBarRefresh (
     FunctionKeyString = AllocatePool (BufferSize);
 
 #if (EFI_SPECIFICATION_VERSION < 0x0002000A)
-    Status            = Hii->GetString (Hii, HiiHandle, Item->NameToken, FALSE, NULL, &BufferSize, NameString);
+    Status            = Hii->GetString (Hii, gEditHiiHandle, Item->NameToken, FALSE, NULL, &BufferSize, NameString);
 #else
-    Status            = LibGetString (HiiHandle, Item->NameToken, NameString, &BufferSize);
+    Status            = LibGetString (gEditHiiHandle, Item->NameToken, NameString, &BufferSize);
 #endif
 
     Width             = max ((StrLen (NameString) + 6), 20);
@@ -232,9 +232,9 @@ MainMenuBarRefresh (
     }
 
 #if (EFI_SPECIFICATION_VERSION < 0x0002000A)
-    Status = Hii->GetString (Hii, HiiHandle, Item->FunctionKeyToken, FALSE, NULL, &BufferSize, FunctionKeyString);
+    Status = Hii->GetString (Hii, gEditHiiHandle, Item->FunctionKeyToken, FALSE, NULL, &BufferSize, FunctionKeyString);
 #else
-    Status = LibGetString (HiiHandle, Item->FunctionKeyToken, FunctionKeyString, &BufferSize);
+    Status = LibGetString (gEditHiiHandle, Item->FunctionKeyToken, FunctionKeyString, &BufferSize);
 #endif    
     PrintAt (Col - 1, Row - 1, L"%E%s%N  %H%s%N  ", FunctionKeyString, NameString);
 
diff --git a/edit/main.c b/edit/main.c
index 9f1c987..0d92c7a 100644
--- a/edit/main.c
+++ b/edit/main.c
@@ -34,7 +34,7 @@ EFI_BOOTSHELL_CODE(
 //
 // Global Variables
 //
-EFI_HII_HANDLE    HiiHandle;
+EFI_HII_HANDLE    gEditHiiHandle;
 #if (EFI_SPECIFICATION_VERSION < 0x0002000A)
 EFI_HII_PROTOCOL  *Hii;
 #endif
@@ -121,13 +121,13 @@ Returns:
   //
   // There should only be one HII protocol
   //
-  Status = LibLocateProtocol (&gEfiHiiProtocolGuid, &Hii);
+  Status = LibLocateProtocol (&gEfiHiiProtocolGuid, (VOID**)&Hii);
   if (EFI_ERROR (Status) || NULL == Hii) {
     return EFI_ABORTED;
   }
 #endif
 
-  Status = LibInitializeStrings (&HiiHandle, STRING_ARRAY_NAME, &EfiEditGuid);
+  Status = LibInitializeStrings (&gEditHiiHandle, STRING_ARRAY_NAME, &EfiEditGuid);
 
   if (EFI_ERROR (Status)) {
     return Status;
@@ -137,7 +137,7 @@ Returns:
   if (VarCheckOk != RetCode) {
     switch (RetCode) {
     case VarCheckUnknown:
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_UNKNOWN_FLAG), HiiHandle, L"edit", Useful);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_UNKNOWN_FLAG), gEditHiiHandle, L"edit", Useful);
       break;
 
     default:
@@ -161,10 +161,10 @@ Returns:
         ChkPck.FlagCount > 2 ||
         (ChkPck.FlagCount == 2 && LibCheckVarGetFlag (&ChkPck, L"-b") == NULL)
         ) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), HiiHandle, L"edit");
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), gEditHiiHandle, L"edit");
       Status = EFI_INVALID_PARAMETER;
     } else {
-      PrintToken (STRING_TOKEN (STR_EDIT_VERBOSE_HELP), HiiHandle);
+      PrintToken (STRING_TOKEN (STR_EDIT_VERBOSE_HELP), gEditHiiHandle);
       Status = EFI_SUCCESS;
     }
 
@@ -172,21 +172,21 @@ Returns:
   }
 
   if (ChkPck.ValueCount > 1) {
-    PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), HiiHandle, L"edit");
+    PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), gEditHiiHandle, L"edit");
     Status = EFI_INVALID_PARAMETER;
     goto done;
   }
 
   if (ChkPck.ValueCount == 1) {
     if (!IsValidFileName (ChkPck.VarList->VarStr)) {
-      PrintToken (STRING_TOKEN (STR_EDIT_MAIN_INVALID_FILE_NAME), HiiHandle);
+      PrintToken (STRING_TOKEN (STR_EDIT_MAIN_INVALID_FILE_NAME), gEditHiiHandle);
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
   }
 
   if (SI->RedirArgc != 0) {
-    PrintToken (STRING_TOKEN (STR_EDIT_NOREDIRECT), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_NOREDIRECT), gEditHiiHandle);
     Status = EFI_INVALID_PARAMETER;
     goto done;
   }
@@ -195,7 +195,7 @@ Returns:
   if (EFI_ERROR (Status)) {
     Out->ClearScreen (Out);
     Out->EnableCursor (Out, TRUE);
-    PrintToken (STRING_TOKEN (STR_EDIT_MAIN_INIT_FAILED), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_EDIT_MAIN_INIT_FAILED), gEditHiiHandle);
     goto done;
   }
 
@@ -240,19 +240,19 @@ Returns:
   //
   if (Status == EFI_SUCCESS) {
   } else if (Status == EFI_OUT_OF_RESOURCES) {
-    PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_OUT_RESOURCE), HiiHandle, L"edit");
+    PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_OUT_RESOURCE), gEditHiiHandle, L"edit");
   } else {
     if (Buffer != NULL) {
       if (StrCmp (Buffer, L"") != 0) {
         //
         // print out the status string
         //
-        PrintToken (STRING_TOKEN (STR_EDIT_MAIN_BUFFER), HiiHandle, Buffer);
+        PrintToken (STRING_TOKEN (STR_EDIT_MAIN_BUFFER), gEditHiiHandle, Buffer);
       } else {
-        PrintToken (STRING_TOKEN (STR_EDIT_MAIN_UNKNOWN_EDITOR_ERR), HiiHandle);
+        PrintToken (STRING_TOKEN (STR_EDIT_MAIN_UNKNOWN_EDITOR_ERR), gEditHiiHandle);
       }
     } else {
-      PrintToken (STRING_TOKEN (STR_EDIT_MAIN_UNKNOWN_EDITOR_ERR), HiiHandle);
+      PrintToken (STRING_TOKEN (STR_EDIT_MAIN_UNKNOWN_EDITOR_ERR), gEditHiiHandle);
     }
   }
 
diff --git a/err/err.c b/err/err.c
index e41a9d6..95db9bc 100644
--- a/err/err.c
+++ b/err/err.c
@@ -35,7 +35,7 @@ extern UINTN  EFIDebug;
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiErrGuid = EFI_ERR_GUID;
 SHELL_VAR_CHECK_ITEM    ErrCheckList[] = {
   {
@@ -149,7 +149,7 @@ _DumpHandleMask (
   EFI_DEBUG_MASK_PROTOCOL *dmp;
   UINTN                   Mask;
 
-  Status = BS->HandleProtocol (Handle, &gEfiDebugMaskProtocolGuid, &dmp);
+  Status = BS->HandleProtocol (Handle, &gEfiDebugMaskProtocolGuid, (VOID**)&dmp);
   if (!EFI_ERROR (Status)) {
     Status = dmp->GetDebugMask (dmp, &Mask);
     if (!EFI_ERROR (Status)) {
@@ -278,7 +278,7 @@ _SetDriverMask (
     goto Done;
   }
 
-  Status = BS->HandleProtocol (RealHandle, &gEfiDebugMaskProtocolGuid, &dmp);
+  Status = BS->HandleProtocol (RealHandle, &gEfiDebugMaskProtocolGuid, (VOID**)&dmp);
   if (EFI_ERROR (Status)) {
     PrintToken (STRING_TOKEN (STR_ERR_HANDLE_NOT_FOUND), HiiHandle, DrvHandle + 1);
     goto Done;
@@ -336,7 +336,7 @@ _SetAllDriverMask (
   }
   
   for (Index = 0; Index < BufferSize / sizeof(EFI_HANDLE); Index ++) {
-    Status = BS->HandleProtocol (Buffer[Index], &gEfiDebugMaskProtocolGuid, &dmp);
+    Status = BS->HandleProtocol (Buffer[Index], &gEfiDebugMaskProtocolGuid, (VOID**)&dmp);
     Status = dmp->SetDebugMask (dmp, Msk);
   }
 
diff --git a/err/err.inf b/err/err.inf
index 467e734..f1a830b 100644
--- a/err/err.inf
+++ b/err/err.inf
@@ -25,7 +25,7 @@ FILE_GUID            = 7ED86F56-5558-4d4f-A972-9307909AE9BA
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-..\ShCommonStrings.uni
+../ShCommonStrings.uni
 ErrStrings.uni
 err.c
 err.h
@@ -33,17 +33,17 @@ err.h
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/guid/guid.c b/guid/guid.c
index 7f26e7d..ce86444 100644
--- a/guid/guid.c
+++ b/guid/guid.c
@@ -36,7 +36,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiGuidGuid = EFI_GUID_GUID;
 SHELL_VAR_CHECK_ITEM    GuidCheckList[] = {
   {
diff --git a/guid/guid.inf b/guid/guid.inf
index 60639d2..8b593b9 100644
--- a/guid/guid.inf
+++ b/guid/guid.inf
@@ -37,23 +37,23 @@
   FILE_GUID            = CBEB01F8-0912-4d87-8A6B-45D02847A405
   COMPONENT_TYPE       = APPLICATION
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   GuidStrings.uni
   guid.c
   guid.h
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 [libraries.common]
   EfiShellLib
   EdkProtocolLib
diff --git a/hexedit/heditor.h b/hexedit/heditor.h
index 09196d6..3cd4d84 100644
--- a/hexedit/heditor.h
+++ b/hexedit/heditor.h
@@ -39,7 +39,7 @@ Abstract:
 #include "libinputbar.h"
 #include "libmenubar.h"
 
-#include "libmisc.h"
+#include "libMisc.h"
 
 #include "libclipboard.h"
 
@@ -52,7 +52,7 @@ extern HEFI_EDITOR_GLOBAL_EDITOR  HMainEditor;
 extern BOOLEAN                    HEditorFirst;
 extern BOOLEAN                    HEditorExit;
 
-extern EFI_HII_HANDLE             HiiHandle;
+extern EFI_HII_HANDLE             gHexEditHiiHandle;
 #if (EFI_SPECIFICATION_VERSION < 0x0002000A)
 extern EFI_HII_PROTOCOL           *Hii;
 #endif
diff --git a/hexedit/heditortype.h b/hexedit/heditortype.h
index 59317a9..0b4e4e2 100644
--- a/hexedit/heditortype.h
+++ b/hexedit/heditortype.h
@@ -30,7 +30,7 @@ Abstract:
 #define EDITOR_NAME           L"EFI Hex Editor\0"
 #define EDITOR_VERSION        L"0.99\0"
 
-#define EFI_EDITOR_LINE_LIST  'eell'
+#define EFI_EDITOR_LINE_LIST  EFI_SIGNATURE_32 ('e','e','l','l')
 
 #define FILE_ATTRIBUTES       EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE | EFI_FILE_MODE_CREATE
 #define FILE_READ_WRITE       EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE
diff --git a/hexedit/hexedit.inf b/hexedit/hexedit.inf
index cf89b9e..0239cb6 100644
--- a/hexedit/hexedit.inf
+++ b/hexedit/hexedit.inf
@@ -25,7 +25,7 @@ FILE_GUID            = A5A41A42-5B2B-4de6-9556-DDC6DC31231C
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   HexeditStrings.uni
   heditor.h
   heditortype.h
@@ -45,17 +45,17 @@ COMPONENT_TYPE       = APPLICATION
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/hexedit/libEditor.c b/hexedit/libEditor.c
index f511020..1e0128f 100644
--- a/hexedit/libEditor.c
+++ b/hexedit/libEditor.c
@@ -20,7 +20,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 
 --*/
 
-#include "Heditor.h"
+#include "heditor.h"
 
 HEFI_EDITOR_COLOR_ATTRIBUTES    HOriginalColors;
 INTN                            HOriginalMode;
@@ -136,7 +136,7 @@ Returns:
   Status = BS->HandleProtocol (
                 In,
                 &gEfiSimplePointerProtocolGuid,
-                &HMainEditor.MouseInterface
+                (VOID**)&HMainEditor.MouseInterface
                 );
   if (EFI_ERROR (Status)) {
     //
@@ -159,7 +159,7 @@ Returns:
         Status = BS->HandleProtocol (
                       HandleBuffer[Index],
                       &gEfiSimplePointerProtocolGuid,
-                      &HMainEditor.MouseInterface
+                      (VOID**)&HMainEditor.MouseInterface
                       );
         if (!EFI_ERROR (Status)) {
           break;
@@ -182,37 +182,37 @@ Returns:
   //
   Status = HMainTitleBarInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_TITLE), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_TITLE), gHexEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
 
   Status = HMainMenuBarInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_MAINMENU), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_MAINMENU), gHexEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
 
   Status = HMainStatusBarInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_STATUS), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_STATUS), gHexEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
 
   Status = HMainInputBarInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_INPUTBAR), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_INPUTBAR), gHexEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
 
   Status = HBufferImageInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_BUFFERIMAGE), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_BUFFERIMAGE), gHexEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
 
   Status = HClipBoardInit ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_CLIPBOARD), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MAINEDITOR_CLIPBOARD), gHexEditHiiHandle);
     return EFI_LOAD_ERROR;
   }
   //
@@ -259,32 +259,32 @@ Returns:
   //
   Status = HMainTitleBarCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_TITLEBAR_CLEAN), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_TITLEBAR_CLEAN), gHexEditHiiHandle);
   }
 
   Status = HMainMenuBarCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MENUBAR_CLEAN), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_MENUBAR_CLEAN), gHexEditHiiHandle);
   }
 
   Status = HMainStatusBarCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_STATUSBAR_CLEAN), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_STATUSBAR_CLEAN), gHexEditHiiHandle);
   }
 
   Status = HMainInputBarCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_INPUTBAR_CLEAN), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_INPUTBAR_CLEAN), gHexEditHiiHandle);
   }
 
   Status = HBufferImageCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_BUFFERIMAGE_CLEAN), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_BUFFERIMAGE_CLEAN), gHexEditHiiHandle);
   }
 
   Status = HClipBoardCleanup ();
   if (EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_CLIPBOARD_CLEAN), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBEDITOR_CLIPBOARD_CLEAN), gHexEditHiiHandle);
   }
   //
   // restore old mode
diff --git a/hexedit/libInputBar.c b/hexedit/libInputBar.c
index 3a4cc7e..caa1ddc 100644
--- a/hexedit/libInputBar.c
+++ b/hexedit/libInputBar.c
@@ -201,7 +201,7 @@ Returns:
   HEditorClearLine (INPUT_BAR_LOCATION);
 
   Out->SetCursorPosition (Out, 0, INPUT_BAR_LOCATION - 1);
-  PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBINPUTBAR_MAININPUTBAR), HiiHandle, HMainInputBar.Prompt);
+  PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBINPUTBAR_MAININPUTBAR), gHexEditHiiHandle, HMainInputBar.Prompt);
 
   //
   // that's the maximum input length that can be displayed on screen
diff --git a/hexedit/libMemImage.c b/hexedit/libMemImage.c
index 407bb2e..d7dbbe8 100644
--- a/hexedit/libMemImage.c
+++ b/hexedit/libMemImage.c
@@ -91,7 +91,7 @@ Returns:
   Status = BS->LocateProtocol (
                 &gEfiPciRootBridgeIoProtocolGuid,
                 NULL,
-                &HMemImage.IoFncs
+                (VOID**)&HMemImage.IoFncs
                 );
   if (Status == EFI_NOT_FOUND) {
     //
diff --git a/hexedit/libMenuBar.c b/hexedit/libMenuBar.c
index 5ecb694..d77a1a0 100644
--- a/hexedit/libMenuBar.c
+++ b/hexedit/libMenuBar.c
@@ -255,9 +255,9 @@ Returns:
     FunctionKeyString = AllocatePool (BufferSize);
 
 #if (EFI_SPECIFICATION_VERSION < 0x0002000A)
-    Status            = Hii->GetString (Hii, HiiHandle, Item->NameToken, FALSE, NULL, &BufferSize, NameString);
+    Status            = Hii->GetString (Hii, gHexEditHiiHandle, Item->NameToken, FALSE, NULL, &BufferSize, NameString);
 #else
-    Status            = LibGetString (HiiHandle, Item->NameToken, NameString, &BufferSize);
+    Status            = LibGetString (gHexEditHiiHandle, Item->NameToken, NameString, &BufferSize);
 #endif
 
     Width             = max ((StrLen (NameString) + 6), 18);
@@ -267,9 +267,9 @@ Returns:
     }
 
 #if (EFI_SPECIFICATION_VERSION < 0x0002000A)
-    Status = Hii->GetString (Hii, HiiHandle, Item->FunctionKeyToken, FALSE, NULL, &BufferSize, FunctionKeyString);
+    Status = Hii->GetString (Hii, gHexEditHiiHandle, Item->FunctionKeyToken, FALSE, NULL, &BufferSize, FunctionKeyString);
 #else
-    Status = LibGetString (HiiHandle, Item->FunctionKeyToken, FunctionKeyString, &BufferSize);
+    Status = LibGetString (gHexEditHiiHandle, Item->FunctionKeyToken, FunctionKeyString, &BufferSize);
 #endif
     if (Index >= 10) {
       PrintAt (Col - 1, Row - 1, L"%E%s%N %H%s%N  ", FunctionKeyString, NameString);
diff --git a/hexedit/libMisc.h b/hexedit/libMisc.h
index 979a7f0..cbf58a8 100644
--- a/hexedit/libMisc.h
+++ b/hexedit/libMisc.h
@@ -20,7 +20,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #ifndef _LIB_MISC_H_
 #define _LIB_MISC_H_
 
-#include "Heditortype.h"
+#include "heditortype.h"
 
 VOID
 HEditorClearLine (
diff --git a/hexedit/libTitleBar.c b/hexedit/libTitleBar.c
index 9e7b9e9..09d068e 100644
--- a/hexedit/libTitleBar.c
+++ b/hexedit/libTitleBar.c
@@ -212,7 +212,7 @@ Returns:
     // the space for file name is 35 characters
     //
     if (StrLen (FileNameTmp) <= 35) {
-      PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_MAINEDITOR), HiiHandle, FileNameTmp);
+      PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_MAINEDITOR), gHexEditHiiHandle, FileNameTmp);
 
       for (Index = StrLen (FileNameTmp); Index < 35; Index++) {
         Print (L" ");
@@ -220,7 +220,7 @@ Returns:
 
     } else {
       for (Index = 0; Index < 32; Index++) {
-        PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_MAINEDITOR_C), HiiHandle, FileNameTmp[Index]);
+        PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_MAINEDITOR_C), gHexEditHiiHandle, FileNameTmp[Index]);
       }
       //
       // print "..."
@@ -234,14 +234,14 @@ Returns:
     if (StrLen (HMainEditor.BufferImage->DiskImage->Name) <= 9) {
       PrintToken (
         STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_MAINEDITOR),
-        HiiHandle,
+        gHexEditHiiHandle,
         HMainEditor.BufferImage->DiskImage->Name
         );
     } else {
       for (Index = 0; Index < 6; Index++) {
         PrintToken (
           STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_MAINEDITOR_C),
-          HiiHandle,
+          gHexEditHiiHandle,
           HMainEditor.BufferImage->DiskImage->Name[Index]
           );
       }
@@ -253,7 +253,7 @@ Returns:
 
     PrintToken (
       STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_MAINEDITOR_TWOVARS),
-      HiiHandle,
+      gHexEditHiiHandle,
       HMainEditor.BufferImage->DiskImage->Offset,
       HMainEditor.BufferImage->DiskImage->Offset + HMainEditor.BufferImage->DiskImage->Size - 1
       );
@@ -269,7 +269,7 @@ Returns:
   case MEM_BUFFER:
     PrintToken (
       STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_MAINEDITOR_TWOVARS),
-      HiiHandle,
+      gHexEditHiiHandle,
       HMainEditor.BufferImage->MemImage->Offset,
       HMainEditor.BufferImage->MemImage->Offset + HMainEditor.BufferImage->MemImage->Size - 1
       );
@@ -286,15 +286,15 @@ Returns:
   //
   switch (HMainEditor.BufferImage->BufferType) {
   case FILE_BUFFER:
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_FILE), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_FILE), gHexEditHiiHandle);
     break;
 
   case DISK_BUFFER:
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_DISK), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_DISK), gHexEditHiiHandle);
     break;
 
   case MEM_BUFFER:
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_MEM), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_LIBTITLEBAR_MEM), gHexEditHiiHandle);
     break;
   }
   //
diff --git a/hexedit/libdiskimage.c b/hexedit/libdiskimage.c
index 7e11ad0..52f177b 100644
--- a/hexedit/libdiskimage.c
+++ b/hexedit/libdiskimage.c
@@ -246,7 +246,7 @@ Returns:
   Status = LibDevicePathToInterface (
             &gEfiBlockIoProtocolGuid,
             DevicePath,
-            &BlkIo
+            (VOID**)&BlkIo
             );
   if (EFI_ERROR (Status)) {
     HMainStatusBarSetStatusString (L"Read Disk Failed");
@@ -427,7 +427,7 @@ Returns:
   Status = LibDevicePathToInterface (
             &gEfiBlockIoProtocolGuid,
             DevicePath,
-            &BlkIo
+            (VOID**)&BlkIo
             );
   if (EFI_ERROR (Status)) {
     return Status;
diff --git a/hexedit/libmenubar.h b/hexedit/libmenubar.h
index e3766e2..2c4cff1 100644
--- a/hexedit/libmenubar.h
+++ b/hexedit/libmenubar.h
@@ -20,7 +20,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #ifndef _LIB_MENU_BAR_H_
 #define _LIB_MENU_BAR_H_
 
-#include "Heditortype.h"
+#include "heditortype.h"
 
 EFI_STATUS
 HMainMenuBarInit (
diff --git a/hexedit/main.c b/hexedit/main.c
index 9c2a032..0f0dc21 100644
--- a/hexedit/main.c
+++ b/hexedit/main.c
@@ -27,7 +27,7 @@ extern UINT8      STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE    HiiHandle;
+EFI_HII_HANDLE    gHexEditHiiHandle;
 #if (EFI_SPECIFICATION_VERSION < 0x0002000A)
 EFI_HII_PROTOCOL  *Hii;
 #endif
@@ -93,10 +93,10 @@ PrintUsage (
   VOID
   )
 {
-  PrintToken (STRING_TOKEN (STR_HEXEDIT_USAGE), HiiHandle);
-  PrintToken (STRING_TOKEN (STR_HEXEDIT_FILENAME), HiiHandle);
-  PrintToken (STRING_TOKEN (STR_HEXEDIT_DISKNAME), HiiHandle);
-  PrintToken (STRING_TOKEN (STR_HEXEDIT_OFFSET_SIZE), HiiHandle);
+  PrintToken (STRING_TOKEN (STR_HEXEDIT_USAGE), gHexEditHiiHandle);
+  PrintToken (STRING_TOKEN (STR_HEXEDIT_FILENAME), gHexEditHiiHandle);
+  PrintToken (STRING_TOKEN (STR_HEXEDIT_DISKNAME), gHexEditHiiHandle);
+  PrintToken (STRING_TOKEN (STR_HEXEDIT_OFFSET_SIZE), gHexEditHiiHandle);
   Print (L"\n\n");
 }
 
@@ -147,7 +147,7 @@ Returns:
   EFI_SHELL_APP_INIT (ImageHandle, SystemTable);
 
 #if (EFI_SPECIFICATION_VERSION < 0x0002000A)
-  Status = LibLocateProtocol (&gEfiHiiProtocolGuid, &Hii);
+  Status = LibLocateProtocol (&gEfiHiiProtocolGuid, (VOID**)&Hii);
   if (EFI_ERROR (Status)) {
     return Status;
   }
@@ -158,12 +158,12 @@ Returns:
   // Register our string package with HII and return the handle to it.
   // If previously registered we will simply receive the handle
   //
-  EFI_SHELL_STR_INIT (HiiHandle, STRING_ARRAY_NAME, EfiHexeditGuid);
+  EFI_SHELL_STR_INIT (gHexEditHiiHandle, STRING_ARRAY_NAME, EfiHexeditGuid);
 
   if (!EFI_PROPER_VERSION (1, 10)) {
     PrintToken (
       STRING_TOKEN (STR_SHELLENV_GNC_COMMAND_NOT_SUPPORT),
-      HiiHandle,
+      gHexEditHiiHandle,
       L"hexedit",
       EFI_VERSION_1_10
       );
@@ -187,17 +187,17 @@ Returns:
     switch (RetCode) {
     case VarCheckConflict:
 
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_FLAG_CONFLICT), HiiHandle, L"hexedit", Useful);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_FLAG_CONFLICT), gHexEditHiiHandle, L"hexedit", Useful);
       break;
 
     case VarCheckDuplicate:
 
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_DUP_FLAG), HiiHandle, L"hexedit", Useful);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_DUP_FLAG), gHexEditHiiHandle, L"hexedit", Useful);
       break;
 
     case VarCheckUnknown:
 
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_UNKNOWN_FLAG), HiiHandle, L"hexedit", Useful);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_UNKNOWN_FLAG), gHexEditHiiHandle, L"hexedit", Useful);
       break;
 
     default:
@@ -220,10 +220,10 @@ Returns:
         ChkPck.FlagCount > 2 ||
         (ChkPck.FlagCount == 2 && LibCheckVarGetFlag (&ChkPck, L"-b") == NULL)
         ) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), HiiHandle, L"hexedit");
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), gHexEditHiiHandle, L"hexedit");
       Status = EFI_INVALID_PARAMETER;
     } else {
-      PrintToken (STRING_TOKEN (STR_HEXEDIT_VERBOSE_HELP), HiiHandle);
+      PrintToken (STRING_TOKEN (STR_HEXEDIT_VERBOSE_HELP), gHexEditHiiHandle);
       Status = EFI_SUCCESS;
     }
 
@@ -233,13 +233,13 @@ Returns:
   Item = LibCheckVarGetFlag (&ChkPck, L"-d");
   if (Item) {
     if (3 < ChkPck.ValueCount) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), HiiHandle, L"hexedit");
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), gHexEditHiiHandle, L"hexedit");
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
 
     if (3 > ChkPck.ValueCount) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_FEW), HiiHandle, L"hexedit");
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_FEW), gHexEditHiiHandle, L"hexedit");
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
@@ -249,7 +249,7 @@ Returns:
     Item    = Item->Next;
     Result  = HXtoi (Item->VarStr, &Offset);
     if (EFI_ERROR (Result)) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), HiiHandle, L"hexedit", Item->VarStr);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), gHexEditHiiHandle, L"hexedit", Item->VarStr);
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
@@ -257,13 +257,13 @@ Returns:
     Item    = Item->Next;
     Result  = HXtoi (Item->VarStr, &Size);
     if (EFI_ERROR (Result)) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), HiiHandle, L"hexedit", Item->VarStr);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), gHexEditHiiHandle, L"hexedit", Item->VarStr);
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
 
     if (Offset < 0 || Size <= 0) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), HiiHandle, L"hexedit", Item->VarStr);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), gHexEditHiiHandle, L"hexedit", Item->VarStr);
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
@@ -274,13 +274,13 @@ Returns:
   Item = LibCheckVarGetFlag (&ChkPck, L"-m");
   if (Item) {
     if (2 < ChkPck.ValueCount) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), HiiHandle, L"hexedit");
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), gHexEditHiiHandle, L"hexedit");
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
 
     if (2 > ChkPck.ValueCount) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_FEW), HiiHandle, L"hexedit");
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_FEW), gHexEditHiiHandle, L"hexedit");
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
@@ -288,7 +288,7 @@ Returns:
     Item    = ChkPck.VarList;
     Result  = HXtoi (Item->VarStr, &Offset);
     if (EFI_ERROR (Result)) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), HiiHandle, L"hexedit", Item->VarStr);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), gHexEditHiiHandle, L"hexedit", Item->VarStr);
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
@@ -296,20 +296,20 @@ Returns:
     Item    = Item->Next;
     Result  = HXtoi (Item->VarStr, &Size);
     if (EFI_ERROR (Result)) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), HiiHandle, L"hexedit", Item->VarStr);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), gHexEditHiiHandle, L"hexedit", Item->VarStr);
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
 
     if (Offset < 0 || Size <= 0) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), HiiHandle, L"hexedit", Item->VarStr);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), gHexEditHiiHandle, L"hexedit", Item->VarStr);
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
 
     LastOffset = (UINT64) Offset + (UINT64) Size - (UINT64) 1;
     if (LastOffset > 0xffffffff) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), HiiHandle, L"hexedit", Item->VarStr);
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_INVALID_ARG), gHexEditHiiHandle, L"hexedit", Item->VarStr);
       goto done;
     }
 
@@ -319,13 +319,13 @@ Returns:
   Item = LibCheckVarGetFlag (&ChkPck, L"-f");
   if (Item) {
     if (1 < ChkPck.ValueCount) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), HiiHandle, L"hexedit");
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), gHexEditHiiHandle, L"hexedit");
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
 
     if (1 > ChkPck.ValueCount) {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_FEW), HiiHandle, L"hexedit");
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_FEW), gHexEditHiiHandle, L"hexedit");
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
@@ -333,7 +333,7 @@ Returns:
     Item  = ChkPck.VarList;
     Name  = Item->VarStr;
     if (!HIsValidFileName (Name)) {
-      PrintToken (STRING_TOKEN (STR_HEXEDIT_FILE_NAME), HiiHandle);
+      PrintToken (STRING_TOKEN (STR_HEXEDIT_FILE_NAME), gHexEditHiiHandle);
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
@@ -345,20 +345,20 @@ Returns:
       if (Name != NULL) {
         FreeName  = TRUE;
       } else {
-        PrintToken(STRING_TOKEN (STR_HEXEDIT_INVALID_DIRECTORY), HiiHandle, L"hexedit");
+        PrintToken(STRING_TOKEN (STR_HEXEDIT_INVALID_DIRECTORY), gHexEditHiiHandle, L"hexedit");
         Status = EFI_INVALID_PARAMETER;
         goto done ;
       }
     } else if (1 == ChkPck.ValueCount) {
       Name = ChkPck.VarList->VarStr;
     } else {
-      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), HiiHandle, L"hexedit");
+      PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_TOO_MANY), gHexEditHiiHandle, L"hexedit");
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
 
     if (!HIsValidFileName (Name)) {
-      PrintToken (STRING_TOKEN (STR_HEXEDIT_FILE_NAME), HiiHandle);
+      PrintToken (STRING_TOKEN (STR_HEXEDIT_FILE_NAME), gHexEditHiiHandle);
       Status = EFI_INVALID_PARAMETER;
       goto done;
     }
@@ -367,7 +367,7 @@ Returns:
   }
 
   if (SI->RedirArgc != 0) {
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_NOREDIRECT), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_NOREDIRECT), gHexEditHiiHandle);
     Status = EFI_INVALID_PARAMETER;
     goto done;
   }
@@ -376,7 +376,7 @@ Returns:
   if (EFI_ERROR (Status)) {
     Out->ClearScreen (Out);
     Out->EnableCursor (Out, TRUE);
-    PrintToken (STRING_TOKEN (STR_HEXEDIT_INIT_FAILED), HiiHandle);
+    PrintToken (STRING_TOKEN (STR_HEXEDIT_INIT_FAILED), gHexEditHiiHandle);
     goto done;
   }
 
@@ -453,19 +453,19 @@ Returns:
   //
   if (Status == EFI_SUCCESS) {
   } else if (Status == EFI_OUT_OF_RESOURCES) {
-    PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_OUT_RESOURCE), HiiHandle, L"hexedit");
+    PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_OUT_RESOURCE), gHexEditHiiHandle, L"hexedit");
   } else {
     if (Buffer != NULL) {
       if (StrCmp (Buffer, L"") != 0) {
         //
         // print out the status string
         //
-        PrintToken (STRING_TOKEN (STR_HEXEDIT_ONE_VAR), HiiHandle, Buffer);
+        PrintToken (STRING_TOKEN (STR_HEXEDIT_ONE_VAR), gHexEditHiiHandle, Buffer);
       } else {
-        PrintToken (STRING_TOKEN (STR_HEXEDIT_UNKNOWN_EDITOR), HiiHandle);
+        PrintToken (STRING_TOKEN (STR_HEXEDIT_UNKNOWN_EDITOR), gHexEditHiiHandle);
       }
     } else {
-      PrintToken (STRING_TOKEN (STR_HEXEDIT_UNKNOWN_EDITOR), HiiHandle);
+      PrintToken (STRING_TOKEN (STR_HEXEDIT_UNKNOWN_EDITOR), gHexEditHiiHandle);
     }
   }
 
diff --git a/inc/shelltypes.h b/inc/shelltypes.h
index 1b6cc38..222d165 100644
--- a/inc/shelltypes.h
+++ b/inc/shelltypes.h
@@ -36,7 +36,7 @@ extern "C"
 #endif
 
 #include "Tiano.h"
-#include "linkedlist.h"
+#include "LinkedList.h"
 
 #include EFI_PROTOCOL_DEFINITION (FileInfo)
 #include EFI_PROTOCOL_DEFINITION (SimpleFileSystem)
diff --git a/load/load.inf b/load/load.inf
index 3ba1dbf..6ce3aae 100644
--- a/load/load.inf
+++ b/load/load.inf
@@ -39,23 +39,23 @@ FILE_GUID            = 5B93B225-2E47-4a61-8EE5-B8EA42EE3EA8
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   LoadStrings.uni
   load.c
     
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/ls/ls.c b/ls/ls.c
index bfb4f9c..bc0cb7c 100644
--- a/ls/ls.c
+++ b/ls/ls.c
@@ -917,14 +917,14 @@ IsMatch (
 
   if ((IsMatch && mIgnoreAttribute) ||
       (IsMatch && !mAttributes && !(Info->Attribute & EFI_FILE_HIDDEN) && !(Info->Attribute & EFI_FILE_SYSTEM)) ||
-      IsMatch &&
+      (IsMatch &&
       mAttributes &&
       (
         (mAttribA ? (Info->Attribute & EFI_FILE_ARCHIVE ? TRUE : FALSE) : TRUE) &&
       (mAttribH ? (Info->Attribute & EFI_FILE_HIDDEN ? TRUE : FALSE) : TRUE) &&
       (mAttribR ? (Info->Attribute & EFI_FILE_READ_ONLY ? TRUE : FALSE) : TRUE) &&
       (mAttribS ? (Info->Attribute & EFI_FILE_SYSTEM ? TRUE : FALSE) : TRUE) &&
-      (mAttribD ? (Info->Attribute & EFI_FILE_DIRECTORY ? TRUE : FALSE) : TRUE)
+      (mAttribD ? (Info->Attribute & EFI_FILE_DIRECTORY ? TRUE : FALSE) : TRUE))
     )
       ) {
     IsMatch = TRUE;
diff --git a/ls/ls.inf b/ls/ls.inf
index 854a5b1..6717ff9 100644
--- a/ls/ls.inf
+++ b/ls/ls.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    LsStrings.uni        
    ls.c                 
    ls.h    
                                          
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/mem/MemCommonPart.c b/mem/MemCommonPart.c
index 54af027..5e2582c 100644
--- a/mem/MemCommonPart.c
+++ b/mem/MemCommonPart.c
@@ -149,7 +149,7 @@ Returns:
     return EFI_SUCCESS;
   }
 
-  Address = (AddressStr) ? Xtoi (AddressStr) : (UINT64) SystemTable;
+  Address = (AddressStr) ? Xtoi (AddressStr) : (UINT64)(UINTN) SystemTable;
   Size    = (SizeStr) ? Xtoi (SizeStr) : 512;
 
   //
@@ -157,7 +157,7 @@ Returns:
   //
   PrintToken (STRING_TOKEN (STR_MEM_MEMORY_ADDR), HiiMemHandle, 2 * sizeof (UINTN), Address, Size);
   if (MMIo) {
-    Status = BS->LocateProtocol (&gEfiPciRootBridgeIoProtocolGuid, NULL, &PciRootBridgeIo);
+    Status = BS->LocateProtocol (&gEfiPciRootBridgeIoProtocolGuid, NULL, (VOID**)&PciRootBridgeIo);
     if (EFI_ERROR (Status)) {
       PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_LOC_PROT_ERR_EX), HiiMemHandle, L"mem", L"PciRootBridgeIo");
       return Status;
@@ -233,7 +233,7 @@ Returns:
   MMIo                  = FALSE;
   AddressStr            = NULL;
   SizeStr               = NULL;
-  Address               = (UINT64) SystemTable;
+  Address               = (UINT64)(UINTN) SystemTable;
   Size                  = 512;
   RetCode               = LibCheckVariables (SI, MemCheckList, &ChkPck, &Useful);
   if (VarCheckOk != RetCode) {
@@ -312,7 +312,7 @@ Returns:
   //
   PrintToken (STRING_TOKEN (STR_MEM_NEW_MEMORY_ADDR), HiiMemHandle, 2 * sizeof (UINTN), Address, Size);
   if (MMIo) {
-    Status = BS->LocateProtocol (&gEfiPciRootBridgeIoProtocolGuid, NULL, &PciRootBridgeIo);
+    Status = BS->LocateProtocol (&gEfiPciRootBridgeIoProtocolGuid, NULL, (VOID**)&PciRootBridgeIo);
     if (EFI_ERROR (Status)) {
       PrintToken (STRING_TOKEN (STR_SHELLENV_GNC_LOC_PROT_ERR_EX), HiiMemHandle, L"mem", L"PciRootBridgeIo");
       return Status;
diff --git a/mem/efidump.c b/mem/efidump.c
index d7b22cb..50ba236 100644
--- a/mem/efidump.c
+++ b/mem/efidump.c
@@ -24,7 +24,7 @@ Revision History
 --*/
 
 #include "debug.h"
-#include "Efipart.h"
+#include "EfiPart.h"
 #include "EfiShellLib.h"
 
 #include STRING_DEFINES_FILE
@@ -352,8 +352,8 @@ DumpMemSystemTable (
     PrintToken (STRING_TOKEN (STR_DEBUG_STD_ERROR_ON), HiiMemHandle, LibDevicePathToStr (DevicePath));
   }
 
-  PrintToken (STRING_TOKEN (STR_DEBUG_RUNTIME_SERVICES), HiiMemHandle, (UINT64) Tbl.Sys->RuntimeServices);
-  PrintToken (STRING_TOKEN (STR_DEBUG_BOOT_SERVICES), HiiMemHandle, (UINT64) Tbl.Sys->BootServices);
+  PrintToken (STRING_TOKEN (STR_DEBUG_RUNTIME_SERVICES), HiiMemHandle, (UINT64)(UINTN) Tbl.Sys->RuntimeServices);
+  PrintToken (STRING_TOKEN (STR_DEBUG_BOOT_SERVICES), HiiMemHandle, (UINT64)(UINTN) Tbl.Sys->BootServices);
 
   EFI64_CODE (
     Status = LibGetSystemConfigurationTable(&gEfiSalSystemTableGuid, &SalSystemTable);
@@ -364,22 +364,22 @@ DumpMemSystemTable (
   
   Status = LibGetSystemConfigurationTable (&gEfiAcpiTableGuid, &AcpiTable);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_ACPI_TABLE), HiiMemHandle, (UINT64) AcpiTable);
+    PrintToken (STRING_TOKEN (STR_DEBUG_ACPI_TABLE), HiiMemHandle, (UINT64)(UINTN) AcpiTable);
   }
 
   Status = LibGetSystemConfigurationTable (&gEfiAcpi20TableGuid, &Acpi20Table);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_APCI_2_TABLE), HiiMemHandle, (UINT64) Acpi20Table);
+    PrintToken (STRING_TOKEN (STR_DEBUG_APCI_2_TABLE), HiiMemHandle, (UINT64)(UINTN) Acpi20Table);
   }
 
   Status = LibGetSystemConfigurationTable (&gEfiMpsTableGuid, &MpsTable);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_MPS_TABLE), HiiMemHandle, (UINT64) MpsTable);
+    PrintToken (STRING_TOKEN (STR_DEBUG_MPS_TABLE), HiiMemHandle, (UINT64)(UINTN) MpsTable);
   }
 
   Status = LibGetSystemConfigurationTable (&gEfiSmbiosTableGuid, &SMBIOSTable);
   if (!EFI_ERROR (Status)) {
-    PrintToken (STRING_TOKEN (STR_DEBUG_SMBIOS_TABLE), HiiMemHandle, (UINT64) SMBIOSTable);
+    PrintToken (STRING_TOKEN (STR_DEBUG_SMBIOS_TABLE), HiiMemHandle, (UINT64)(UINTN) SMBIOSTable);
   }
 }
 
diff --git a/mem/mem.inf b/mem/mem.inf
index 0561176..88090e5 100644
--- a/mem/mem.inf
+++ b/mem/mem.inf
@@ -25,7 +25,7 @@ FILE_GUID            = 1B0B8206-74DC-4681-AA0D-039A9699EA56
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   MemStrings.uni
   DebugStrings.uni  
   mm.c
@@ -34,17 +34,17 @@ COMPONENT_TYPE       = APPLICATION
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/memmap/memmap.c b/memmap/memmap.c
index f7353ff..7b0e893 100644
--- a/memmap/memmap.c
+++ b/memmap/memmap.c
@@ -35,7 +35,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiMemmapGuid = EFI_MEMMAP_GUID;
 SHELL_VAR_CHECK_ITEM    MemmapCheckList[] = {
   {
diff --git a/memmap/memmap.inf b/memmap/memmap.inf
index 1d68c61..fcbcfc7 100644
--- a/memmap/memmap.inf
+++ b/memmap/memmap.inf
@@ -40,7 +40,7 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   memmapStrings.uni
   memmap.c
   memmap.h
@@ -48,17 +48,17 @@ COMPONENT_TYPE       = APPLICATION
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/mkdir/mkdir.c b/mkdir/mkdir.c
index 79a08ca..c105726 100644
--- a/mkdir/mkdir.c
+++ b/mkdir/mkdir.c
@@ -49,7 +49,7 @@ MkDir (
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiMkdirGuid = EFI_MKDIR_GUID;
 SHELL_VAR_CHECK_ITEM    MkdirCheckList[] = {
   {
diff --git a/mkdir/mkdir.inf b/mkdir/mkdir.inf
index e49daac..efbc4ab 100644
--- a/mkdir/mkdir.inf
+++ b/mkdir/mkdir.inf
@@ -41,23 +41,23 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
   MkdirStrings.uni
-  ..\ShCommonStrings.uni     
+  ../ShCommonStrings.uni     
   mkdir.c              
   mkdir.h              
  
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/mm/mm.c b/mm/mm.c
index 033849b..1c8c51b 100644
--- a/mm/mm.c
+++ b/mm/mm.c
@@ -73,7 +73,7 @@ GetHex (
 //
 // Global Variables
 //
-EFI_HII_HANDLE HiiHandle;
+STATIC EFI_HII_HANDLE HiiHandle;
 EFI_GUID EfiIomodGuid = EFI_IOMOD_GUID;
 SHELL_VAR_CHECK_ITEM    IomodCheckList[] = {
   {
@@ -750,7 +750,7 @@ GetHex (
     }
 
     if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F')) {
-      u     = u << 4 | c - (c >= 'A' ? 'A' - 10 : '0');
+      u     = (u << 4) | (c - (c >= 'A' ? 'A' - 10 : '0'));
 
       Find  = TRUE;
     } else {
diff --git a/mm/mm.inf b/mm/mm.inf
index 4857d9e..fa84147 100644
--- a/mm/mm.inf
+++ b/mm/mm.inf
@@ -41,23 +41,23 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
   MmStrings.uni
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   mm.c
   mm.h
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/mode/mode.inf b/mode/mode.inf
index 47e5c80..beee5dc 100644
--- a/mode/mode.inf
+++ b/mode/mode.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   ModeStrings.uni
   mode.c
   mode.h
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/mount/mount.c b/mount/mount.c
index fa32b1f..fd34238 100644
--- a/mount/mount.c
+++ b/mount/mount.c
@@ -36,7 +36,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiMountGuid = EFI_MOUNT_GUID;
 SHELL_VAR_CHECK_ITEM      MountCheckList[] = {
   {
diff --git a/mount/mount.inf b/mount/mount.inf
index 922c490..71144af 100644
--- a/mount/mount.inf
+++ b/mount/mount.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   MountStrings.uni
   mount.c
   mount.h
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/mv/mv.c b/mv/mv.c
index 3b04021..47617e5 100644
--- a/mv/mv.c
+++ b/mv/mv.c
@@ -36,7 +36,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiMvGuid = EFI_MV_GUID;
 SHELL_VAR_CHECK_ITEM      MvCheckList[] = {
   {
diff --git a/mv/mv.inf b/mv/mv.inf
index b52e28d..0a4a326 100644
--- a/mv/mv.inf
+++ b/mv/mv.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    MvStrings.uni        
    mv.c                 
    mv.h                 
                                           
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/newshell/FakeHii.c b/newshell/FakeHii.c
index c187b47..5dff3ad 100644
--- a/newshell/FakeHii.c
+++ b/newshell/FakeHii.c
@@ -196,7 +196,7 @@ FakeUninstallHiiDatabase (
     Status = BS->HandleProtocol (
                   mFakeHiiHandle,
                   &gEfiHiiProtocolGuid,
-                  &FakeHii
+                  (VOID**)&FakeHii
                   );
     Status = BS->UninstallProtocolInterface (
                   mFakeHiiHandle,
@@ -320,7 +320,7 @@ InsertStringPackage (
   if (Language == NULL) {
     return EFI_OUT_OF_RESOURCES;
   }
-  strcpya (Language, (UINT8 *) PackageHdr + HeaderSize - LanguageSize);
+  strcpya (Language, (CHAR8*) ((UINT8 *) PackageHdr + HeaderSize - LanguageSize));
   for (Link = PackageList->StringPkgHdr.Flink; Link != &PackageList->StringPkgHdr; Link = Link->Flink) {
     StringPackage = CR (Link, FAKE_HII_STRING_PACKAGE, Entry, FAKE_HII_STRING_PACKAGE_SIGNATURE);
     if (CompareLanguage (Language, StringPackage->StringPkgHdr->Language)) {
@@ -770,7 +770,7 @@ FakeHiiGetString (
   StringPackage = NULL;
   for (Link = DatabaseRecord->StringPkgHdr.Flink; Link != &DatabaseRecord->StringPkgHdr; Link = Link->Flink) {
     StringPackage = CR (Link, FAKE_HII_STRING_PACKAGE, Entry, FAKE_HII_STRING_PACKAGE_SIGNATURE);
-    if (CompareLanguage (StringPackage->StringPkgHdr->Language, (UINT8 *) Language)) {
+    if (CompareLanguage (StringPackage->StringPkgHdr->Language, (CHAR8 *) Language)) {
       Matched = TRUE;
       break;
     }
diff --git a/newshell/init.c b/newshell/init.c
index fd4adf6..33fec86 100644
--- a/newshell/init.c
+++ b/newshell/init.c
@@ -23,7 +23,7 @@ Abstract:
 #include "nshell.h"
 
 extern UINT8    STRING_ARRAY_NAME[];
-extern BOOLEAN  gHiiInitialized = FALSE;
+BOOLEAN  gHiiInitialized = FALSE;
 
 //
 // This is the generated header file which includes whatever needs to be exported (strings + IFR)
@@ -99,13 +99,13 @@ _GetFsDpOfImg (
   Status = BS->HandleProtocol (
                 ImgHnd,
                 &gEfiLoadedImageProtocolGuid,
-                &img
+                (VOID**)&img
                 );
   if (!EFI_ERROR (Status)) {
     Status = BS->HandleProtocol (
                   img->DeviceHandle,
                   &gEfiDevicePathProtocolGuid,
-                  &dp
+                  (VOID**)&dp
                   );
     if (!EFI_ERROR (Status)) {
       *DevPath  = DuplicateDevicePath (dp);
@@ -220,7 +220,7 @@ _DoInit (
   //
   Status = LibLocateProtocol (
              &gEfiConsoleControlProtocolGuid,
-             &ConsoleControl
+             (VOID**)&ConsoleControl
              );
   if (!EFI_ERROR (Status)) {
     Status = ConsoleControl->GetMode (ConsoleControl, &mOldCurrentMode, NULL, NULL);
@@ -342,7 +342,7 @@ _EnableShellEnv (
       Status = _ShellLoadEnvDriver (ImageHandle);
     )
     if (EFI_ERROR (Status)) {
-      Status = LibLocateProtocol (&ShellEnvProtocol, &SE);
+      Status = LibLocateProtocol (&ShellEnvProtocol, (VOID**)&SE);
       if (EFI_ERROR (Status)) {
         PrintToken (STRING_TOKEN (STR_NSHELL_ENV_DRIVER), HiiNewshellHandle);
         return Status;
@@ -372,7 +372,7 @@ _InstallShellInterface (
     *IsRootInstance = TRUE;
   }
 
-  Status = LibLocateProtocol (&ShellEnvProtocol, &SE);
+  Status = LibLocateProtocol (&ShellEnvProtocol, (VOID**)&SE);
   ASSERT (!EFI_ERROR (Status));
   SI = SE->NewShell (ImageHandle);
 
@@ -543,7 +543,7 @@ _CleanUpOnExit (
   //
   ConsoleControlStatus = LibLocateProtocol (
                            &gEfiConsoleControlProtocolGuid,
-                           &ConsoleControl
+                           (VOID**)&ConsoleControl
                            );
   if (!EFI_ERROR (ConsoleControlStatus)) {
     ConsoleControlStatus = ConsoleControl->GetMode (ConsoleControl, &CurrentMode, NULL, NULL);
@@ -723,7 +723,7 @@ Returns:
         Status = BS->HandleProtocol (
                       ImageHandle,
                       &ShellInterfaceProtocol,
-                      &SI
+                      (VOID**)&SI
                       );
         ASSERT (!EFI_ERROR (Status));
       }
diff --git a/newshell/nshell.inf b/newshell/nshell.inf
index 22479b0..b69f1a1 100644
--- a/newshell/nshell.inf
+++ b/newshell/nshell.inf
@@ -26,24 +26,24 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
   NshellStrings.uni
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   init.c
   nshell.h
   fakehii.c
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/openinfo/openinfo.c b/openinfo/openinfo.c
index 9b3356c..c7dfb9e 100644
--- a/openinfo/openinfo.c
+++ b/openinfo/openinfo.c
@@ -36,7 +36,7 @@ extern UINT8  STRING_ARRAY_NAME[];
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiOpeninfoGuid = EFI_OPENINFO_GUID;
 SHELL_VAR_CHECK_ITEM    OpeninfoCheckList[] = {
   {
diff --git a/openinfo/openinfo.inf b/openinfo/openinfo.inf
index 638462d..383d58a 100644
--- a/openinfo/openinfo.inf
+++ b/openinfo/openinfo.inf
@@ -41,24 +41,24 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
   OPeninfoStrings.uni
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   openinfo.c
   openinfo.h
 
   
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/pci/pci.c b/pci/pci.c
index 8dc0dba..b0e5da6 100644
--- a/pci/pci.c
+++ b/pci/pci.c
@@ -344,7 +344,7 @@ PCIE_EXPLAIN_STRUCT PcieExplainList[] = {
 // Global Variables
 //
 PCI_CONFIG_SPACE  *mConfigSpace;
-EFI_HII_HANDLE    HiiHandle;
+STATIC EFI_HII_HANDLE    HiiHandle;
 EFI_GUID          EfiPciGuid = EFI_PCI_GUID;
 SHELL_VAR_CHECK_ITEM    PciCheckList[] = {
   {
@@ -1034,7 +1034,7 @@ Returns:
   Status = BS->HandleProtocol (
                 Handle,
                 &gEfiPciRootBridgeIoProtocolGuid,
-                IoDev
+                (VOID**)IoDev
                 );
 
   if (EFI_ERROR (Status)) {
@@ -1043,7 +1043,7 @@ Returns:
   //
   // Call Configuration() to get address space descriptors
   //
-  Status = (*IoDev)->Configuration (*IoDev, Descriptors);
+  Status = (*IoDev)->Configuration (*IoDev, (VOID**)Descriptors);
   if (Status == EFI_UNSUPPORTED) {
     *Descriptors = NULL;
     return EFI_SUCCESS;
@@ -1956,7 +1956,7 @@ Returns:
     INDEX_OF (&(CardBus->IoBase0)),
     Io32Bit ? L"          32 bit" : L"          16 bit",
     CardBus->IoBase0 & (Io32Bit ? 0xfffffffc : 0x0000fffc),
-    CardBus->IoLimit0 & (Io32Bit ? 0xffffffff : 0x0000ffff) | 0x00000003
+    (CardBus->IoLimit0 & (Io32Bit ? 0xffffffff : 0x0000ffff)) | 0x00000003
     );
 
   Io32Bit = (BOOLEAN) (CardBus->IoBase1 & PCI_BIT_0);
@@ -1966,7 +1966,7 @@ Returns:
     INDEX_OF (&(CardBus->IoBase1)),
     Io32Bit ? L"          32 bit" : L"          16 bit",
     CardBus->IoBase1 & (Io32Bit ? 0xfffffffc : 0x0000fffc),
-    CardBus->IoLimit1 & (Io32Bit ? 0xffffffff : 0x0000ffff) | 0x00000003
+    (CardBus->IoLimit1 & (Io32Bit ? 0xffffffff : 0x0000ffff)) | 0x00000003
     );
 
   //
diff --git a/pci/pci.h b/pci/pci.h
index 0716bee..6a3ef76 100644
--- a/pci/pci.h
+++ b/pci/pci.h
@@ -30,7 +30,7 @@ Revision History
     0x388da6c3, 0x3447, 0x4b1f, 0xa0, 0xba, 0xa9, 0xe8, 0xa2, 0x87, 0xf1, 0x76 \
   }
 
-#include "TIANO.h"
+#include "Tiano.h"
 
 typedef enum {
   PciDevice,
diff --git a/pci/pci.inf b/pci/pci.inf
index d4499d6..4691013 100644
--- a/pci/pci.inf
+++ b/pci/pci.inf
@@ -41,7 +41,7 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
   PciStrings.uni
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   pci.c
   pci.h
   pci_class.h
@@ -49,17 +49,17 @@ COMPONENT_TYPE       = APPLICATION
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/pci/pci_class.c b/pci/pci_class.c
index caffe6d..14aa88d 100644
--- a/pci/pci_class.c
+++ b/pci/pci_class.c
@@ -30,7 +30,7 @@ Revision History
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 
 PCI_CLASS_ENTRY gClassStringList[];
 
diff --git a/pci/pci_class.h b/pci/pci_class.h
index c7fff0c..ebaa9f6 100644
--- a/pci/pci_class.h
+++ b/pci/pci_class.h
@@ -24,7 +24,7 @@ Revision History
 #ifndef _PCI_CLASS_H_
 #define _PCI_CLASS_H_
 
-#include "TIANO.h"  // for UINT32 etc.
+#include "Tiano.h"  // for UINT32 etc.
 #define PCI_CLASS_STRING_LIMIT  54
 //
 // Printable strings for Pci class code
diff --git a/reset/reset.inf b/reset/reset.inf
index 3af6b2c..b89ae85 100644
--- a/reset/reset.inf
+++ b/reset/reset.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    ResetStrings.uni
    Reset.c
    Reset.h 
                                           
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/rm/rm.inf b/rm/rm.inf
index 0da05e0..bc7449f 100644
--- a/rm/rm.inf
+++ b/rm/rm.inf
@@ -41,23 +41,23 @@ COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
    RmStrings.uni      
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    rm.h                        
    rm.c                 
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/sermode/sermode.c b/sermode/sermode.c
index b59e801..3340352 100644
--- a/sermode/sermode.c
+++ b/sermode/sermode.c
@@ -35,7 +35,7 @@ extern UINT8    STRING_ARRAY_NAME[];
 
 #include EFI_PROTOCOL_DEFINITION (SerialIo)
 
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiSermodeGuid = EFI_SERMODEB_GUID;
 SHELL_VAR_CHECK_ITEM    SermodeCheckList[] = {
   {
@@ -104,7 +104,7 @@ iDisplaySettings (
 
     }
 
-    Status = BS->HandleProtocol (Handles[Index], &gEfiSerialIoProtocolGuid, &SerialIo);
+    Status = BS->HandleProtocol (Handles[Index], &gEfiSerialIoProtocolGuid, (VOID**)&SerialIo);
     if (!EFI_ERROR (Status)) {
       switch (SerialIo->Mode->Parity) {
       case DefaultParity:
@@ -454,7 +454,7 @@ Returns:
       continue;
     }
 
-    Status = BS->HandleProtocol (Handles[Index], &gEfiSerialIoProtocolGuid, &SerialIo);
+    Status = BS->HandleProtocol (Handles[Index], &gEfiSerialIoProtocolGuid, (VOID**)&SerialIo);
     if (!EFI_ERROR (Status)) {
       Status = SerialIo->SetAttributes (
                           SerialIo,
diff --git a/sermode/sermode.inf b/sermode/sermode.inf
index 71f3c66..47ac581 100644
--- a/sermode/sermode.inf
+++ b/sermode/sermode.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   SermodeStrings.uni
   sermode.c
   sermode.h
  
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/shellenv/Connect.c b/shellenv/Connect.c
index 71ecf0b..6b26bfe 100644
--- a/shellenv/Connect.c
+++ b/shellenv/Connect.c
@@ -333,7 +333,7 @@ Returns:
     Status = BS->HandleProtocol (
                   HandleBuffer[0],
                   &gEfiDevicePathProtocolGuid,
-                  &Instance
+                  (VOID**)&Instance
                   );
     if (EFI_ERROR (Status)) {
       DriverBindingHandleCount  = 1;
@@ -349,7 +349,7 @@ Returns:
     Status = BS->HandleProtocol (
                   HandleBuffer[0],
                   &gEfiDevicePathProtocolGuid,
-                  &Instance
+                  (VOID**)&Instance
                   );
     if (EFI_ERROR (Status)) {
       PrintToken (
@@ -368,7 +368,7 @@ Returns:
     Status = BS->HandleProtocol (
                   HandleBuffer[1],
                   &gEfiDriverBindingProtocolGuid,
-                  &Instance
+                  (VOID**)&Instance
                   );
     if (EFI_ERROR (Status)) {
       PrintToken (
@@ -407,7 +407,7 @@ Returns:
       Status = BS->HandleProtocol (
                     AllHandleBuffer[Index],
                     &gEfiDriverBindingProtocolGuid,
-                    &Instance
+                    (VOID**)&Instance
                     );
       if (EFI_ERROR (Status)) {
         DeviceHandleBuffer[DeviceHandleCount++] = AllHandleBuffer[Index];
@@ -1052,7 +1052,7 @@ SEnvConnectConsole (
     Status = BS->HandleProtocol (
                   *ConsoleHandle,
                   ConsoleGuid,
-                  &Interface
+                  (VOID**)&Interface
                   );
   } 
 
@@ -1079,7 +1079,7 @@ SEnvConnectConsole (
         Status = BS->HandleProtocol (
                       AllHandleBuffer[Index],
                       &gEfiDevicePathProtocolGuid,
-                      &Interface
+                      (VOID**)&Interface
                       );
         if (!EFI_ERROR (Status)) {
           ConsoleIndex = Index;
@@ -1095,7 +1095,7 @@ SEnvConnectConsole (
     BS->HandleProtocol (
           *ConsoleHandle,
           ConsoleGuid,
-          ConsoleInterface
+          (VOID**)ConsoleInterface
           );
   }
 
diff --git a/shellenv/dprot.c b/shellenv/dprot.c
index 91faa50..c5078c9 100644
--- a/shellenv/dprot.c
+++ b/shellenv/dprot.c
@@ -23,7 +23,7 @@ Revision History
 
 #include "shelle.h"
 #include "shellenvguid.h"
-#include "acpi.h"
+#include "Acpi.h"
 
 STATIC CHAR16 *SEnvDP_IlleagalStr[] = { L"Illegal" };
 
diff --git a/shellenv/exec.c b/shellenv/exec.c
index a6c1b73..f825588 100644
--- a/shellenv/exec.c
+++ b/shellenv/exec.c
@@ -1872,7 +1872,7 @@ Returns:
     return Status;
   }
   //
-  // Processing foo: or foo:\
+  // Processing foo:\ or foo:
   //
   if (PathPos != -1 && Ptr1 == NULL) {
     return Status;
diff --git a/shellenv/for.c b/shellenv/for.c
index 99664ad..93ab1f2 100644
--- a/shellenv/for.c
+++ b/shellenv/for.c
@@ -24,7 +24,7 @@ Revision History
 #include "shelle.h"
 #include "shellenvguid.h"
 
-/*
+#if 0
 BOOLEAN
 CheckInterValue (
   IN CHAR16                        *wszValueStr,
@@ -190,7 +190,7 @@ Arguments:
 Returns:
   EFI_SUCCESS      The function finished sucessfully
 
---
+--*/
 {
   EFI_BATCH_STATEMENT                *Stmt;
   EFI_LIST_ENTRY                     FileList;
@@ -326,7 +326,8 @@ Done:
     
   return Status;
 }
-*/
+#endif
+
 EFI_STATUS
 SEnvCmdForRun (
   IN EFI_HANDLE                         hImageHandle,
diff --git a/shellenv/init.c b/shellenv/init.c
index dad9002..458c6eb 100644
--- a/shellenv/init.c
+++ b/shellenv/init.c
@@ -143,7 +143,7 @@ Returns:
     Status = BS->HandleProtocol (
                   mOldSEnv->Handle,
                   &ShellEnvProtocol,
-                  &(mOldSEnv->Interface)
+                  (VOID**)&(mOldSEnv->Interface)
                   );
     ASSERT (!EFI_ERROR (Status));
     Status = BS->ReinstallProtocolInterface (
diff --git a/shellenv/map.c b/shellenv/map.c
index 3ebf2b4..297f689 100644
--- a/shellenv/map.c
+++ b/shellenv/map.c
@@ -2038,13 +2038,13 @@ Returns:
     goto Done;
   }
 
-  Status = BS->HandleProtocol (Handle, &gEfiBlockIoProtocolGuid, &BlockIo);
+  Status = BS->HandleProtocol (Handle, &gEfiBlockIoProtocolGuid, (VOID**)&BlockIo);
   //
   // This is just for NT32, because fsntx has no block io protocol installed
   // but fsntx has installed simple file system protocol
   //
   if (EFI_ERROR (Status)) {
-    Status = BS->HandleProtocol (Handle, &gEfiSimpleFileSystemProtocolGuid, &BlockIo);
+    Status = BS->HandleProtocol (Handle, &gEfiSimpleFileSystemProtocolGuid, (VOID**)&BlockIo);
   }
 
   if (EFI_ERROR (Status)) {
diff --git a/shellenv/protid.c b/shellenv/protid.c
index 3edca2c..a9401e7 100644
--- a/shellenv/protid.c
+++ b/shellenv/protid.c
@@ -1183,7 +1183,7 @@ GetDriverName (
       *DriverName = LibDevicePathToStr (Image->FilePath);
     }
   } else {
-    LibGetDriverName (DriverBindingHandle, Language, DriverName);
+    LibGetDriverName (DriverBindingHandle, (CHAR8*)Language, DriverName);
   }
 
   return EFI_SUCCESS;
@@ -1539,7 +1539,7 @@ Returns:
 
     DevicePath      = NULL;
     BestDeviceName  = NULL;
-    Status          = BS->HandleProtocol (Handle, &gEfiDevicePathProtocolGuid, &DevicePath);
+    Status          = BS->HandleProtocol (Handle, &gEfiDevicePathProtocolGuid, (VOID**)&DevicePath);
 
     Print (L"\n");
     PrintToken (STRING_TOKEN (STR_SHELLENV_PROTID_CONTROLLER_NAME), HiiEnvHandle);
@@ -1598,14 +1598,14 @@ Returns:
         Image = FALSE;
         Status = GetDriverName (
                   DriverBindingHandleBuffer[Index],
-                  Language,
+                  (UINT8*)Language,
                   FALSE,
                   &DriverName
                   );
         if (DriverName == NULL) {
           Status = GetDriverName (
                     DriverBindingHandleBuffer[Index],
-                    Language,
+                    (UINT8*)Language,
                     TRUE,
                     &DriverName
                     );
@@ -1792,7 +1792,7 @@ Returns:
 
   Status = GetDriverName (
             Handle,
-            Language,
+            (UINT8*)Language,
             FALSE,
             &DriverName
             );
@@ -1806,7 +1806,7 @@ Returns:
 
   Status = GetDriverName (
             Handle,
-            Language,
+            (UINT8*)Language,
             TRUE,
             &DriverName
             );
@@ -1979,7 +1979,7 @@ Returns:
 
       if (Prot->Handles[Index] == Handle) {
         Dump    = Verbose ? Prot->DumpInfo : Prot->DumpToken;
-        Status  = BS->HandleProtocol (Handle, &Prot->ProtocolId, &Interface);
+        Status  = BS->HandleProtocol (Handle, &Prot->ProtocolId, (VOID**)&Interface);
         if (!EFI_ERROR (Status)) {
           if (Verbose) {
             for (Index1 = 0; Index1 < ProtocolBufferCount; Index1++) {
@@ -2027,7 +2027,7 @@ Returns:
           goto Done;
         }
 
-        Status = BS->HandleProtocol (Handle, ProtocolBuffer[Index1], &Interface);
+        Status = BS->HandleProtocol (Handle, ProtocolBuffer[Index1], (VOID**)&Interface);
         if (!EFI_ERROR (Status)) {
           PrintToken (
             STRING_TOKEN (STR_SHELLENV_PROTID_TWO_VARS_HG_NEW),
diff --git a/stall/stall.inf b/stall/stall.inf
index 58545a5..0c50120 100644
--- a/stall/stall.inf
+++ b/stall/stall.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   stallStrings.uni
   stall.c
   stall.h
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/time/time.c b/time/time.c
index 00dd586..a0adbfe 100644
--- a/time/time.c
+++ b/time/time.c
@@ -64,8 +64,8 @@ STATIC
 BOOLEAN
 GetNumber (
   IN      CHAR16  *Str,
-  IN OUT  INTN    *Offset,
-  IN OUT  INTN    *number,
+  IN OUT  UINTN   *Offset,
+  IN OUT  UINTN   *number,
   IN      BOOLEAN GetSecond
   );
 
@@ -296,8 +296,8 @@ STATIC
 BOOLEAN
 GetNumber (
   IN      CHAR16  *Str,
-  IN OUT  INTN    *Offset,
-  IN OUT  INTN    *Number,
+  IN OUT  UINTN   *Offset,
+  IN OUT  UINTN   *Number,
   IN    BOOLEAN   GetSecond
   )
 {
diff --git a/time/time.inf b/time/time.inf
index 5181280..5b65e49 100644
--- a/time/time.inf
+++ b/time/time.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    TimeStrings.uni
    Time.c
    Time.h 
                                           
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/touch/touch.c b/touch/touch.c
index 0938d34..a5f61b8 100644
--- a/touch/touch.c
+++ b/touch/touch.c
@@ -64,7 +64,7 @@ TouchFreeFileArg (
 //
 // Global Variables
 //
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiTouchGuid = EFI_TOUCH_GUID;
 SHELL_VAR_CHECK_ITEM    TouchCheckList[] = {
   {
diff --git a/touch/touch.inf b/touch/touch.inf
index 5382ff6..1a89a90 100644
--- a/touch/touch.inf
+++ b/touch/touch.inf
@@ -39,23 +39,23 @@ FILE_GUID            = 2EBB94E8-3792-47bb-8843-4D5ED5B98F28
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   TouchStrings.uni
   touch.c
     
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/type/type.c b/type/type.c
index 129f911..c3855ef 100644
--- a/type/type.c
+++ b/type/type.c
@@ -59,7 +59,7 @@ BOOLEAN         TypeAscii;
 BOOLEAN         TypeUnicode;
 BOOLEAN         TypeAuto;
 
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiTypeGuid = EFI_TYPE_GUID;
 SHELL_VAR_CHECK_ITEM    TypeCheckList[] = {
   {
diff --git a/type/type.inf b/type/type.inf
index efb0a82..23138c6 100644
--- a/type/type.inf
+++ b/type/type.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    TypeStrings.uni
    type.c
    type.h 
                                           
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/tzone/timezone.inf b/tzone/timezone.inf
index 57834c6..525a9cb 100644
--- a/tzone/timezone.inf
+++ b/tzone/timezone.inf
@@ -25,24 +25,24 @@ FILE_GUID            = E27B12B9-2647-4af3-ADBC-B5AB5FB50421
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   TZoneStrings.uni
   tzone.c
   tzone.h
 
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/unload/unload.c b/unload/unload.c
index 100f16b..daeaf05 100644
--- a/unload/unload.c
+++ b/unload/unload.c
@@ -110,7 +110,7 @@ _UnloadGetDriverName (
       *DriverName = LibDevicePathToStr (Image->FilePath);
     }
   } else {
-    LibGetDriverName(DriverBindingHandle, Language, DriverName);
+    LibGetDriverName(DriverBindingHandle, (CHAR8*)Language, DriverName);
   }
 
   return EFI_SUCCESS;
@@ -184,7 +184,7 @@ Returns:
 
     DevicePath      = NULL;
     BestDeviceName  = NULL;
-    Status          = BS->HandleProtocol (Handle, &gEfiDevicePathProtocolGuid, &DevicePath);
+    Status          = BS->HandleProtocol (Handle, &gEfiDevicePathProtocolGuid, (VOID**)&DevicePath);
 
     Print (L"\n");
     PrintToken (STRING_TOKEN (STR_UNLOAD_CONTROLLER_NAME), HiiUnloadHandle);
@@ -242,14 +242,14 @@ Returns:
         Image = FALSE;
         Status = _UnloadGetDriverName (
                   DriverBindingHandleBuffer[Index],
-                  Language,
+                  (UINT8*)Language,
                   FALSE,
                   &DriverName
                   );
         if (DriverName == NULL) {
           Status = _UnloadGetDriverName (
                     DriverBindingHandleBuffer[Index],
-                    Language,
+                    (UINT8*)Language,
                     TRUE,
                     &DriverName
                     );
@@ -436,7 +436,7 @@ Returns:
 
   Status = _UnloadGetDriverName (
             Handle,
-            Language,
+            (UINT8*)Language,
             FALSE,
             &DriverName
             );
@@ -450,7 +450,7 @@ Returns:
 
   Status = _UnloadGetDriverName (
             Handle,
-            Language,
+            (UINT8*)Language,
             TRUE,
             &DriverName
             );
@@ -628,7 +628,7 @@ Returns:
 
       if (Prot->Handles[Index] == Handle) {
         Dump    = Verbose ? Prot->DumpInfo : Prot->DumpToken;
-        Status  = BS->HandleProtocol (Handle, &Prot->ProtocolId, &Interface);
+        Status  = BS->HandleProtocol (Handle, &Prot->ProtocolId, (VOID**)&Interface);
         if (!EFI_ERROR (Status)) {
           if (Verbose) {
             for (Index1 = 0; Index1 < ProtocolBufferCount; Index1++) {
@@ -676,7 +676,7 @@ Returns:
           goto Done;
         }
 
-        Status = BS->HandleProtocol (Handle, ProtocolBuffer[Index1], &Interface);
+        Status = BS->HandleProtocol (Handle, ProtocolBuffer[Index1], (VOID**)&Interface);
         if (!EFI_ERROR (Status)) {
           PrintToken (STRING_TOKEN (STR_UNLOAD_TWO_VARS_HG_NEW), HiiUnloadHandle, ProtocolBuffer[Index1], Interface);
         }
diff --git a/unload/unload.inf b/unload/unload.inf
index e91869e..d3475e0 100644
--- a/unload/unload.inf
+++ b/unload/unload.inf
@@ -39,23 +39,23 @@ FILE_GUID            = 409060F4-3E7B-44cc-9DFD-A8E807474888
 COMPONENT_TYPE       = APPLICATION
 
 [sources.common]
-  ..\ShCommonStrings.uni
+  ../ShCommonStrings.uni
   UnloadStrings.uni
   unload.c
     
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/ver/Ebc/verEbc.c b/ver/Ebc/verEbc.c
index 1d7368d..9518e14 100644
--- a/ver/Ebc/verEbc.c
+++ b/ver/Ebc/verEbc.c
@@ -45,7 +45,7 @@ DisplayExtendedVersionInfo (
   Status = BS->LocateProtocol (
                  &gEfiEbcProtocolGuid,
                  NULL,
-                 &Ebc
+                 (VOID**)&Ebc
                  );
   if (EFI_ERROR (Status)) {
     return ;
diff --git a/ver/Ver.inf b/ver/Ver.inf
index 56a135d..574a297 100644
--- a/ver/Ver.inf
+++ b/ver/Ver.inf
@@ -40,33 +40,33 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    VerStrings.uni
    Ver.c
    Ver.h 
    
-[sources.ia32,sources.x64]
-   ia32\ver32.c
+[sources.ia32,sources.x64,sources.ARM]
+   ia32/ver32.c
 
 [sources.ipf]
-   ipf\ver64.c
+   IPF/ver64.c
 
 [sources.ebc]
-   ebc\verEbc.c
+   eb./verEbc.c
                                           
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/vol/Vol.inf b/vol/Vol.inf
index 71d2cb5..c05ddaf 100644
--- a/vol/Vol.inf
+++ b/vol/Vol.inf
@@ -40,24 +40,24 @@ COMPONENT_TYPE       = APPLICATION
 
 
 [sources.common]
-   ..\ShCommonStrings.uni   
+   ../ShCommonStrings.uni   
    VolStrings.uni
    Vol.c
    Vol.h 
                                           
 [includes.common]
   .
-  ..\Inc
-  ..\Library
-  $(EDK_SOURCE)\Foundation
-  $(EDK_SOURCE)\Foundation\Include
-  $(EDK_SOURCE)\Foundation\Include\IndustryStandard
-  $(EDK_SOURCE)\Foundation\Efi
-  $(EDK_SOURCE)\Foundation\Efi\Include
-  $(EDK_SOURCE)\Foundation\FrameWork
-  $(EDK_SOURCE)\Foundation\FrameWork\Include
-  $(EDK_SOURCE)\Foundation\Core\Dxe
-  $(DEST_DIR)\
+  ../Inc
+  ../Library
+  $(EDK_SOURCE)/Foundation
+  $(EDK_SOURCE)/Foundation/Include
+  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+  $(EDK_SOURCE)/Foundation/Efi
+  $(EDK_SOURCE)/Foundation/Efi/Include
+  $(EDK_SOURCE)/Foundation/FrameWork
+  $(EDK_SOURCE)/Foundation/FrameWork/Include
+  $(EDK_SOURCE)/Foundation/Core/Dxe
+  $(DEST_DIR./
 
 [libraries.common]  
   EfiShellLib
diff --git a/vol/vol.c b/vol/vol.c
index 47a4de0..13be9fb 100644
--- a/vol/vol.c
+++ b/vol/vol.c
@@ -32,7 +32,7 @@ extern UINT8    STRING_ARRAY_NAME[];
 //
 #include STRING_DEFINES_FILE
 
-EFI_HII_HANDLE  HiiHandle;
+STATIC EFI_HII_HANDLE  HiiHandle;
 EFI_GUID        EfiVolGuid = EFI_VOL_GUID;
 SHELL_VAR_CHECK_ITEM    VolCheckList[] = {
   {
