Basic Addon Framework Question

Hello,

I am attempting to create a basic add-on to get a feel for how they work. After tons of research/dissecting of other add-ons, I believe I have a general understanding. My problem stems from an issue with client versus server side commands, and how I can load them accordingly. Here is some of my code:

/lua/autorun/rem.lua
[LUA]
if SERVER then
AddCSLuaFile(“rem_server.lua”)
else
include(“rem_client.lua”)
end
[/LUA]

/lua/rem_client.lua
[LUA]
initialized = false

/* some code to implement my menu, like the REM_ShowMenu function and REM_HideMenu */

function REM_InitializeAll()
if ( initialized ) then return end
Msg(“Initializing Client…”)
concommand.Add("+REM_Menu", REM_ShowMenu)
concommand.Add("-REM_Menu", REM_HideMenu)
initialized = true
end

concommand.Add(“REM_CS_Initialize”,REM_InitializeAll)
[/LUA]

/lua/rem_server.lua
[LUA]
AddCSLuaFile(“rem_client.lua”)

function REM_PlayerInitialSpawn( ply )
RunConsoleCommand( “REM_CS_Initialize” )
end

hook.Add( “PlayerInitialSpawn”, “REM_PlayerInitialSpawn”, REM_PlayerInitialSpawn)
[/LUA]

Here is what I think it is supposed to do.

The /autorun/ folder loads up the module for the client and server, parsing it appropriately.

The *client * registers its own functions like REM_CS_Initialize.
The *server * loads and it hooks into the player spawn code at the console level.

As soon as a player spawns the server will force the newly loaded player to execute the REM_CS_Initialize code which, in turn, binds the +/-MENU commands. And voila, a basic plugin skeleton is born.

Unfortunately, I have no idea what is going on anymore. It seems like the client simply doesn’t register the commands and thus, is unable to access… anything.

I am simply looking for direction here. I tried to find a tutorial on addons; to no avail. So everything I know has been derrived from a few addons that I currently have code for.
Thank you for reading, I really appreciate any input you may have! I am practically going insane over this…

-SharpCoder