diff --git a/app/controllers/admins_controller.rb b/app/controllers/admins_controller.rb
index 12d3cdbf9f0e129648f3840827153e9328c55098..d433c71ba51bd8259b4070d337a4d80bf5d7a613 100644
--- a/app/controllers/admins_controller.rb
+++ b/app/controllers/admins_controller.rb
@@ -11,11 +11,12 @@ class AdminsController < ApplicationController
   end
 
   def admin_inviter 
-    email = params[:idenitifer]
+    inviter = InvitationCode.default_inviter_or(current_user)
+    email = params[:identifier]
     user = User.find_by_email(email)
     
     unless user
-      EmailInviter.new(email).send!
+      EmailInviter.new(email, inviter).send!
       flash[:notice] = "invitation sent to #{email}"
     else
       flash[:notice]= "error sending invite to #{email}"
@@ -23,6 +24,11 @@ class AdminsController < ApplicationController
     redirect_to user_search_path, :notice => flash[:notice]
   end
 
+  def add_invites
+    InvitationCode.find_by_token(params[:invite_code_id]).add_invites!
+    redirect_to user_search_path
+  end
+
   def weekly_user_stats
     @created_users = User.where("username IS NOT NULL")
     @created_users_by_week =  Hash.new{ |h,k| h[k] = [] }
diff --git a/app/controllers/invitations_controller.rb b/app/controllers/invitations_controller.rb
index cefd53162279e6b89c6ce5b9d99fef211dc5a499..560b9aeb7564ab6be2890e4254d950aeb1113b4e 100644
--- a/app/controllers/invitations_controller.rb
+++ b/app/controllers/invitations_controller.rb
@@ -26,7 +26,7 @@ class InvitationsController < ApplicationController
 
 
   def create
-    inviter = EmailInviter.new(params[:email_inviter][:emails], params[:email_inviter])
+    inviter = EmailInviter.new(params[:email_inviter][:emails], current_user, params[:email_inviter])
     inviter.send!
     redirect_to :back, :notice => "Great! Invites were sent off to #{inviter.emails.join(', ')}" 
   end
diff --git a/app/models/invitation.rb b/app/models/invitation.rb
index 809872c10f6f31f9ef33ff226cb38c53dde00498..d19b462ae7075cbb0553e27b56cab90df37f151d 100644
--- a/app/models/invitation.rb
+++ b/app/models/invitation.rb
@@ -70,7 +70,7 @@ class Invitation < ActiveRecord::Base
   # @return [Invitation] self
   def send!
     if email_like_identifer
-      EmailInviter.new(self.identifier).send! 
+      EmailInviter.new(self.identifier, sender).send! 
     else
       puts "broken facebook invitation_token"
     end
diff --git a/app/models/invitation_code.rb b/app/models/invitation_code.rb
index ba31b74c915c13d5b22cda035c16d9d398ec57aa..33e25964253aa49708bb24f26bf6e53d15a042c6 100644
--- a/app/models/invitation_code.rb
+++ b/app/models/invitation_code.rb
@@ -3,15 +3,35 @@ class InvitationCode < ActiveRecord::Base
 
   validates_presence_of :user
 
-  before_create :generate_token
+  before_create :generate_token, :set_default_invite_count
 
   def to_param
     token 
   end
 
+  def add_invites!
+    self.update_attributes(:count => self.count+100)
+  end
+
+  def use!
+    self.update_attributes(:count => self.count-1)
+  end
+
   def generate_token
     begin
       self.token = ActiveSupport::SecureRandom.hex(6)
     end while InvitationCode.exists?(:token => self[:token])
   end
-end
+
+  def self.default_inviter_or(user)
+    if AppConfig[:admin_account].present?
+      inviter = User.find_by_username(AppConfig[:admin_account])
+    end
+    inviter ||= user
+    inviter
+  end
+
+  def set_default_invite_count
+    self.count = AppConfig[:invite_count] || 25
+  end
+end
\ No newline at end of file
diff --git a/app/models/user.rb b/app/models/user.rb
index f03cf6ebfc73b9b74686fe882b93b94a86d2822c..1f7c9e5a1636e8387215cdb716d8e21c72b0ef35 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -83,7 +83,6 @@ class User < ActiveRecord::Base
     User.joins(:contacts).where(:contacts => {:person_id => person.id})
   end
 
-<<<<<<< HEAD
   def self.monthly_actives(start_day = Time.now)
     logged_in_since(start_day - 1.month)
   end
@@ -108,28 +107,18 @@ class User < ActiveRecord::Base
     ConversationVisibility.sum(:unread, :conditions => "person_id = #{self.person.id}")
   end
 
-  # @return [User]
-  def self.find_by_invitation(invitation)
-    service = invitation.service
-    identifier = invitation.identifier
-
-    if service == 'email'
-      existing_user = User.where(:email => identifier).first
-    else
-      existing_user = User.joins(:services).where(:services => {:type => "Services::#{service.titleize}", :uid => identifier}).first
-=======
   #should be deprecated
   def ugly_accept_invitation_code
     begin
       self.invitations_to_me.first.sender.invitation_code
     rescue Exception => e
       nil
->>>>>>> invite_link functionailty mostly works
     end
   end
 
   def process_invite_acceptence(invite)
     self.invited_by = invite.user
+    invite.use!
   end
 
 
diff --git a/app/views/admins/user_search.html.haml b/app/views/admins/user_search.html.haml
index ff74732fff604c392ea28bb342f275a7ddce4a53..8736398e28db922fb6077693030ce091e3b13288 100644
--- a/app/views/admins/user_search.html.haml
+++ b/app/views/admins/user_search.html.haml
@@ -1,65 +1,47 @@
 
 .span-24
   = render :partial => 'admins/admin_bar.haml'
-%br
-%br
+.span-24.prepend-4
 
-%h3
-  = form_tag 'admin_inviter', :method => :get do
-    email to invite:
-    = text_field_tag 'identifier'
-    = submit_tag 'invite'
+  %h3
+    you currently have
+    = current_user.invitation_code.count
+    invites left
+    = link_to "add_invites", add_invites_path(current_user.invitation_code)
 
+    = form_tag 'admin_inviter', :method => :get do
+      email to invite:
+      = text_field_tag 'identifier'
+      = submit_tag 'invite'
 
 
-%h3
-  user search
-= form_tag 'user_search', :method => :get do
-  username:
-  = text_field_tag 'user[username]', params[:user][:username]
 
-  email:
-  = text_field_tag 'user[email]', params[:user][:email]
+  %h3
+    user search
+  = form_tag 'user_search', :method => :get do
+    username:
+    = text_field_tag 'user[username]', params[:user][:username]
 
-  invitation identifier:
-  = text_field_tag 'user[invitation_identifier]', params[:user][:invitation_identifier]
+    email:
+    = text_field_tag 'user[email]', params[:user][:email]
 
-  invitation token:
-  = text_field_tag 'user[invitation_token]', params[:user][:invitation_token]
-  = submit_tag 'go'
+    = submit_tag 'go'
 
 
-= "#{@users.count} users found"
-%br
-%br
-= for user in @users
-  = user.inspect
+  = "#{@users.count} users found"
   %br
-  - if user.person
-    = user.person.inspect
+  %br
+  - @users.each do |user|
+    = user.inspect
     %br
-    - if user.person.profile
-      = user.person.profile.inspect
+    - if user.person
+      = user.person.inspect
+      %br
+      - if user.person.profile
+        = user.person.profile.inspect
+      %br
+    = "invite token: #{invite_code_url(user.invited_by.invite_code)}" if user.invited_by.present?
+    = link_to "add_invites", add_invites_path(user.invitation_code)
     %br
-  = "invite token: #{accept_invitation_url(user, :invitation_token => user.invitation_token)}" if user.invitation_token
-  %br
-  %br
-  %br
-%br
-= javascript_include_tag 'apiconsole'
-#query
-  %h3 api console
-  = text_field_tag :api
-  = submit_tag 'ping this api', :id => 'api_submit'
-
-  response:
-  %br
-  %br
-  #resp
-
-
-%br
-  post to Diaspora v1
-
-
-
+    %br
+    %br
\ No newline at end of file
diff --git a/app/views/notifier/invite.html.erb b/app/views/notifier/invite.html.erb
index be58a6716f6b243080f282833a4a21fa824701af..ead22fce250ea74df330a8254709c8b42ad5873a 100644
--- a/app/views/notifier/invite.html.erb
+++ b/app/views/notifier/invite.html.erb
@@ -1,4 +1,4 @@
-<%- self.extend NotifierHelper -%>
+  <%- self.extend NotifierHelper -%>
 <head>
   <title><%=invite_email_title %></title>
 </head>
diff --git a/config/application.yml.example b/config/application.yml.example
index d5e318f2771d50f3f22e20defdf659538b9a9d85..1de63b89a3988ff1e4ddbc61a8d0abf798664b20 100644
--- a/config/application.yml.example
+++ b/config/application.yml.example
@@ -49,6 +49,12 @@ defaults: &defaults
   # Set this to true if you want users to invite as many people as they want
   open_invitations: true
 
+  #the 'admin' account for your pod... ie for jd.com, this is diasporahq
+  admin_account: ''
+
+  #the default amount of invitiations for an invite link
+  invite_count: 25
+
   # Set this to true if you don't want your users to follow the diasporahq@joindiaspora.com
   # account on account creation.  The diasporahq account helps users start with some
   # activity in their stream and get news about Diaspora, but if you don't want your server
diff --git a/config/routes.rb b/config/routes.rb
index 0be9978c6a88f2697f79e3e2960a41155a6927ff..e22da84f0a6d605be73da66ac3b799082a0d0565 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -112,6 +112,7 @@ Diaspora::Application.routes.draw do
     get   :weekly_user_stats
     get   :correlations
     get   :stats, :as => 'pod_stats'
+    get   "add_invites/:invite_code_id" => 'admins#add_invites', :as => 'add_invites'
   end
 
   resource :profile, :only => [:edit, :update]
diff --git a/db/migrate/20110105051803_create_import_tables.rb b/db/migrate/20110105051803_create_import_tables.rb
index f514f3157a31c0dbef7f2cf74940d8f9c8cb30de..0388d2cefc00cf3ba3a03a904c96d0711506f9a8 100644
--- a/db/migrate/20110105051803_create_import_tables.rb
+++ b/db/migrate/20110105051803_create_import_tables.rb
@@ -166,7 +166,6 @@ class CreateImportTables < ActiveRecord::Migration
       t.string :language
       t.string :email
       t.database_authenticatable
-      t.invitable
       t.recoverable
       t.rememberable
       t.trackable
diff --git a/features/step_definitions/user_steps.rb b/features/step_definitions/user_steps.rb
index e60922eddb5eea21fb13b58f95814860670e6342..2dbf8c2819f52a4f7d4610b0733ea774a9271ae8 100644
--- a/features/step_definitions/user_steps.rb
+++ b/features/step_definitions/user_steps.rb
@@ -26,13 +26,15 @@ Given /^a nsfw user with email "([^\"]*)"$/ do |email|
 end
 
 Given /^I have been invited by an admin$/ do
-  i = EmailInviter.new("new_invitee@example.com")
+  admin = Factory(:user)
+  bob.invitation_code
+  i = EmailInviter.new("new_invitee@example.com", bob)
   i.send!
 end
 
 Given /^I have been invited by a user$/ do
   @inviter = Factory(:user)
-  i = EmailInviter.new("new_invitee@example.com", :inviter => @inviter)
+  i = EmailInviter.new("new_invitee@example.com", @inviter)
   i.send!
 end
 
diff --git a/lib/email_inviter.rb b/lib/email_inviter.rb
index 0585b866bba979fbb0074ef43cbd967264a7400f..298379c81feb71c936531a864369086f38a94152 100644
--- a/lib/email_inviter.rb
+++ b/lib/email_inviter.rb
@@ -1,10 +1,10 @@
 class EmailInviter
   attr_accessor :emails, :message, :inviter, :locale
 
-  def initialize(emails, options={})
+  def initialize(emails, inviter, options={})
     self.message = options[:message]
-    self.inviter = options[:inviter]
     self.locale = options.fetch(:locale, 'en')
+    self.inviter = inviter 
     self.emails = emails
   end
 
@@ -15,12 +15,7 @@ class EmailInviter
   end
 
   def invitation_code
-    @invitation_code ||= inviter.nil? ? EmailInviter.admin_code : inviter.invitation_code 
-  end
-
-  def self.admin_code
-    puts "FIX ME"
-    "foo"
+    @invitation_code ||= inviter.invitation_code 
   end
 
   def send!
diff --git a/lib/rake_helpers.rb b/lib/rake_helpers.rb
index d71fa3e83e44f9e1c603aeb186d53ce8064e57f4..f7a075277c75912d84004382fa6070324c8045c5 100644
--- a/lib/rake_helpers.rb
+++ b/lib/rake_helpers.rb
@@ -26,6 +26,11 @@ module RakeHelpers
       possible_invite = Invitation.find_by_identifier(backer_email)
       possible_user ||= possible_invite.recipient if possible_invite.present?
 
+      admin_account = User.find_by_username(AppConfig[:admin_account])
+      raise "no admin_account in application.yml" unless admin_account.present?
+      admin_account.invitation_code.count += num_to_process
+      admin_account.invitation_code.save
+
       unless possible_user
         puts "#{n}: sending email to: #{backer_name} #{backer_email}" unless Rails.env == 'test'
         unless test
diff --git a/spec/controllers/admins_controller_spec.rb b/spec/controllers/admins_controller_spec.rb
index 69299f01f70ef5194a25089b5911f997b3d337db..4f269d41952065fde2b1fee81666b5049a6afd5d 100644
--- a/spec/controllers/admins_controller_spec.rb
+++ b/spec/controllers/admins_controller_spec.rb
@@ -73,11 +73,6 @@ describe AdminsController do
         AppConfig[:admins] = [@user.username]
       end
 
-      it 'succeeds' do
-        get :admin_inviter, :identifier => 'bob@moms.com'
-        response.should be_redirect
-      end
-
       it 'does not die if you do it twice' do
         get :admin_inviter, :identifier => 'bob@moms.com'
         get :admin_inviter, :identifier => 'bob@moms.com'
@@ -85,7 +80,7 @@ describe AdminsController do
       end
 
       it 'invites a new user' do
-        Invitation.should_receive(:create)
+        EmailInviter.should_receive(:new).and_return(stub.as_null_object)
         get :admin_inviter, :identifier => 'bob@moms.com'
         response.should redirect_to user_search_path
         flash.notice.should include("invitation sent")
diff --git a/spec/controllers/invitations_controller_spec.rb b/spec/controllers/invitations_controller_spec.rb
index b2e6afe50e4c1e4ac1ff41f940b00f21233dd5f8..2f551c252f556316ce3bda6670790a159ae574d5 100644
--- a/spec/controllers/invitations_controller_spec.rb
+++ b/spec/controllers/invitations_controller_spec.rb
@@ -20,8 +20,8 @@ describe InvitationsController do
     end
 
     it 'creates an EmailInviter'  do
-      inviter = stub(:emails => ['mbs@gmail.com'])
-      EmailInviter.should_receive(:new).with(@invite['email_inviter']['emails'], @invite['email_inviter']).
+      inviter = stub(:emails => ['mbs@gmail.com'], :send! => true)
+      EmailInviter.should_receive(:new).with(@invite['email_inviter']['emails'], @user, @invite['email_inviter']).
         and_return(inviter)
       post :create,  @invite
     end
@@ -41,7 +41,6 @@ describe InvitationsController do
     end
   end
 
-
   describe '#new' do
     it 'renders' do
       sign_in :user, @user
diff --git a/spec/lib/email_inviter_spec.rb b/spec/lib/email_inviter_spec.rb
index 22e216da0fc2b7328406ea55c1607288bde50cb6..3d423d36201ba0a2ce63820aba434461788c7e73 100644
--- a/spec/lib/email_inviter_spec.rb
+++ b/spec/lib/email_inviter_spec.rb
@@ -4,65 +4,53 @@ describe EmailInviter do
   before do
     @user = stub(:invitation_code => 'coolcodebro', :present? => true, 
                  :email => 'foo@bar.com')
-    @emails = "mbs333@gmail.com, foo@bar.com maxwell@dude.com"
+    @emails = "mbs333@gmail.com, foo1@bar.com maxwell@dude.com"
   end
 
   it 'has a list of emails' do 
-    inviter = EmailInviter.new(@emails)
+    inviter = EmailInviter.new(@emails, @user)
     inviter.emails.should_not be_empty
   end
 
   it 'should parse three emails' do
-    inviter = EmailInviter.new(@emails)
+    inviter = EmailInviter.new(@emails, @user)
     inviter.emails.count.should == 3
   end
 
-  it 'an optional inviter' do
-    inviter = EmailInviter.new(@emails, :inviter => @user)
+  it 'has an inviter' do
+    inviter = EmailInviter.new(@emails, @user)
     inviter.inviter.should_not be_nil
   end
 
   it 'can have a message' do
     message = "you guys suck hard"
-    inviter = EmailInviter.new("emails", :message =>  message)
+    inviter = EmailInviter.new("emails", @user, :message =>  message)
     inviter.message.should == message 
   end
 
   describe '#emails' do
     it 'rejects the inviter email if present' do
-      inviter = EmailInviter.new(@emails + " #{@user.email}", :inviter => @user)
+      inviter = EmailInviter.new(@emails + " #{@user.email}", @user)
       inviter.emails.should_not include(@user.email)
     end
   end
 
   describe 'language' do
     it 'defaults to english' do
-      inviter = EmailInviter.new(@emails)
+      inviter = EmailInviter.new(@emails, @user)
       inviter.locale.should == 'en'
     end
 
     it 'listens to the langauge option' do
-      inviter = EmailInviter.new(@emails, :locale => 'es')
+      inviter = EmailInviter.new(@emails, @user, :locale => 'es')
       inviter.locale.should == 'es'
     end
   end
 
   describe '#invitation_code' do
-    it 'delegates to the user if it exists' do
-      inviter = EmailInviter.new(@emails, :inviter => @user)
+    it 'delegates to the user' do
+      inviter = EmailInviter.new(@emails, @user)
       inviter.invitation_code.should == @user.invitation_code
     end
-
-    it 'calls admin_code if it does not' do
-      inviter = EmailInviter.new(@emails)
-      inviter.should_receive(:admin_code).and_return("foo")
-      inviter.invitation_code.should == "foo"
-    end
-  end
-
-  describe 'admin code' do
-    it 'is hella pending' do
-      pending
-    end
   end
 end
\ No newline at end of file
diff --git a/spec/lib/rake_helper_spec.rb b/spec/lib/rake_helper_spec.rb
index b2b8de3c4a69d8c4efbef7f285de6e46495cfdee..48b617fc72dc570c7d31c2838eb440c107eeaff5 100644
--- a/spec/lib/rake_helper_spec.rb
+++ b/spec/lib/rake_helper_spec.rb
@@ -12,20 +12,18 @@ describe RakeHelpers do
   describe '#process_emails' do
     before do
       Devise.mailer.deliveries = []
+      @old_admin = AppConfig[:admin_account]
+      AppConfig[:admin_account] = Factory(:user).username
     end
-    it 'should send emails to each backer' do
-      expect{
-        process_emails(@csv, 100, 1, false)
-        }.to change(User, :count).by(3)
+
+    after do
+      AppConfig[:admin_account] = @old_admin
     end
 
-    it 'should not send the email to the same email twice' do
-      process_emails(@csv, 100, 1, false)
+    it 'should send emails to each email' do
 
-      Devise.mailer.deliveries.count.should == 3
+      EmailInviter.should_receive(:new).exactly(3).times.and_return(stub.as_null_object)
       process_emails(@csv, 100, 1, false)
-
-      Devise.mailer.deliveries.count.should == 3
     end
   end
 end
diff --git a/spec/models/invitation_code_spec.rb b/spec/models/invitation_code_spec.rb
index 142cc2944d31a71a7ddf94822c2b5f14493637cb..18d949f9822eee0ae2eb692b7c6a4fa4c4648a7f 100644
--- a/spec/models/invitation_code_spec.rb
+++ b/spec/models/invitation_code_spec.rb
@@ -4,4 +4,39 @@ describe InvitationCode do
   it 'has a valid factory' do
     Factory(:invitation_code).should be_valid
   end
+
+  it 'sets the count to a default value' do
+    code = Factory(:invitation_code)
+    code.count.should > 0 
+  end
+
+  describe '#use!' do
+    it 'decrements the count of the code' do
+      code = Factory(:invitation_code)
+
+      expect{
+        code.use!
+      }.to change(code, :count).by(-1)
+    end
+  end
+
+  describe '.default_inviter_or' do
+    before do
+      @old_account = AppConfig[:admin_account]
+      AppConfig[:admin_account] = 'bob'
+    end
+
+    after do
+      AppConfig[:admin_account] = @old_account
+    end
+
+    it 'grabs the set admin account for the pod...' do
+      InvitationCode.default_inviter_or(alice).username.should == 'bob'
+    end
+
+    it '..or the given user' do
+      AppConfig[:admin_account] = ''
+      InvitationCode.default_inviter_or(alice).username.should == 'alice'
+    end
+  end
 end