diff --git a/src/Makefile b/src/Makefile
index 036da146b..ab016b177 100755
--- a/src/Makefile
+++ b/src/Makefile
@@ -1,224 +1,231 @@
 # LAMMPS multiple-machine Makefile
 
 SHELL = /bin/bash
 #.IGNORE:
 
 # Definitions
 
 ROOT =	lmp
 EXE =	$(ROOT)_$@
 SRC =	$(wildcard *.cpp)
 INC =	$(wildcard *.h)
 OBJ = 	$(SRC:.cpp=.o)
 
 # Package variables
 
 PACKAGE = asphere class2 colloid dipole fld gpu granular kim \
 	  kspace manybody mc meam molecule opt peri poems reax replica \
 	  rigid shock srd xtc
 
 PACKUSER = user-misc user-atc user-awpmd user-cg-cmm user-colvars \
 	   user-cuda user-eff user-omp user-molfile user-reaxc user-sph
 
 PACKLIB = gpu kim meam poems reax user-atc user-awpmd user-colvars \
 	  user-cuda user-molfile
 
 PACKALL = $(PACKAGE) $(PACKUSER)
 
 PACKAGEUC = $(shell echo $(PACKAGE) | tr a-z A-Z)
 PACKUSERUC = $(shell echo $(PACKUSER) | tr a-z A-Z)
 
 YESDIR = $(shell echo $(@:yes-%=%) | tr a-z A-Z)
 NODIR  = $(shell echo $(@:no-%=%) | tr a-z A-Z)
 
 # List of all targets
 
 help:
 	@echo ''
 	@echo 'make clean-all           delete all object files'
 	@echo 'make clean-machine       delete object files for one machine'
+	@echo 'make purge               purge obsolete copies of package sources'
 	@echo 'make tar                 create lmp_src.tar.gz of src dir and packages'
 	@echo 'make makelib             create Makefile.lib for static library build'
 	@echo 'make makeshlib           create Makefile.shlib for shared library build'
 	@echo 'make makelist            create Makefile.list used by old makes'
 	@echo 'make -f Makefile.lib machine      build LAMMPS as static library for machine'
 	@echo 'make -f Makefile.shlib machine    build LAMMPS as shared library for machine'
 	@echo 'make -f Makefile.list machine     build LAMMPS from explicit list of files'
 	@echo 'make stubs               build dummy MPI library in STUBS'
 	@echo 'make install-python      install LAMMPS wrapper in Python'
 	@echo ''
 	@echo 'make package             list available packages'
 	@echo 'make package-status      status of all packages'
 	@echo 'make yes-package         install a single package in src dir'
 	@echo 'make no-package          remove a single package from src dir'
 	@echo 'make yes-all             install all packages in src dir'
 	@echo 'make no-all              remove all packages from src dir'
 	@echo 'make yes-standard        install all standard packages'
 	@echo 'make no-standard         remove all standard packages'
 	@echo 'make yes-user            install all user packages'
 	@echo 'make no-user             remove all user packages'
 	@echo 'make no-lib              remove all packages with external libs'
 	@echo ''
 	@echo 'make package-update      replace src files with package files'
 	@echo 'make package-overwrite   replace package files with src files'
 	@echo 'make package-diff        diff src files against package files'
 	@echo ''
 	@echo 'make machine             build LAMMPS where machine is one of:'
 	@echo ''
 	@files="`ls MAKE/Makefile.*`"; \
 	  for file in $$files; do head -1 $$file; done
 	@echo ''
 
 # Build the code
 
 .DEFAULT:
 	@test -f MAKE/Makefile.$@
 	@if [ ! -d Obj_$@ ]; then mkdir Obj_$@; fi
 	@$(SHELL) Make.sh style
 	@cp -p *.cpp *.h Obj_$@
 	@cp MAKE/Makefile.$@ Obj_$@/Makefile
 	@if [ ! -e Makefile.package ]; \
 	  then cp Makefile.package.empty Makefile.package; fi
 	@if [ ! -e Makefile.package.settings ]; \
 	  then cp Makefile.package.settings.empty Makefile.package.settings; fi
 	@cp Makefile.package Makefile.package.settings Obj_$@
 	@cd Obj_$@; \
 	$(MAKE) $(MFLAGS) "OBJ = $(OBJ)" "INC = $(INC)" "SHFLAGS =" \
 	  "EXE = ../$(EXE)" ../$(EXE)
 	@if [ -d Obj_$@ ]; then cd Obj_$@; rm -f $(SRC) $(INC) Makefile*; fi
 
 # Remove machine-specific object files
 
 clean:
 	@echo 'make clean-all           delete all object files'
 	@echo 'make clean-machine       delete object files for one machine'
 
 clean-all:
 	rm -rf Obj_*
 
 clean-%:
 	rm -rf Obj_$(@:clean-%=%)
 
+purge: Purge.list
+	@echo 'Purging obsolete and auto-generated source files'
+	@for f in `grep -v '#' Purge.list` ;		\
+	    do test -f $$f && rm $$f && echo $$f || : ;		\
+	done
+
 # Create a tarball of src dir and packages
 
 tar:
 	@cd STUBS; make clean
 	@cd ..; tar cvzf src/$(ROOT)_src.tar.gz \
 	  src/Make* src/Package.sh src/MAKE src/*.cpp src/*.h src/STUBS \
 	  $(patsubst %,src/%,$(PACKAGEUC)) $(patsubst %,src/%,$(PACKUSERUC)) \
           --exclude=*/.svn
 	@cd STUBS; make
 	@echo "Created $(ROOT)_src.tar.gz"
 
 # Make MPI STUBS library
 
 stubs:
 	@cd STUBS; make clean; make
 
 # Create Makefile.lib, Makefile.shlib, and Makefile.list
 
 makelib:
 	@$(SHELL) Make.sh style
 	@$(SHELL) Make.sh Makefile.lib
 
 makeshlib:
 	@$(SHELL) Make.sh style
 	@$(SHELL) Make.sh Makefile.shlib
 
 makelist:
 	@$(SHELL) Make.sh style
 	@$(SHELL) Make.sh Makefile.list
 
 # install LAMMPS shared lib and Python wrapper for Python usage
 
 install-python:
 	@python ../python/install.py
 
 # Package management
 
 package:
 	@echo 'Standard packages:' $(PACKAGE)
 	@echo ''
 	@echo 'User-contributed packages:' $(PACKUSER)
 	@echo ''
 	@echo 'make package             list available packages'
 	@echo 'make package-status      status of all packages'
 	@echo 'make yes-package         install a single package in src dir'
 	@echo 'make no-package          remove a single package from src dir'
 	@echo 'make yes-all             install all packages in src dir'
 	@echo 'make no-all              remove all packages from src dir'
 	@echo 'make yes-standard        install all standard packages'
 	@echo 'make no-standard         remove all standard packages'
 	@echo 'make yes-user            install all user packages'
 	@echo 'make no-user             remove all user packages'
 	@echo 'make no-lib              remove all packages with external libs'
 	@echo ''
 	@echo 'make package-update      replace src files with package files'
 	@echo 'make package-overwrite   replace package files with src files'
 	@echo 'make package-diff        diff src files against package file'
 
 yes-all:
 	@for p in $(PACKALL); do $(MAKE) yes-$$p; done
 
 no-all:
 	@for p in $(PACKALL); do $(MAKE) no-$$p; done
 
 yes-standard:
 	@for p in $(PACKAGE); do $(MAKE) yes-$$p; done
 
 no-standard:
 	@for p in $(PACKAGE); do $(MAKE) no-$$p; done
 
 yes-user:
 	@for p in $(PACKUSER); do $(MAKE) yes-$$p; done
 
 no-user:
 	@for p in $(PACKUSER); do $(MAKE) no-$$p; done
 
 no-lib:
 	@for p in $(PACKLIB); do $(MAKE) no-$$p; done
 
 yes-%:
 	@if [ ! -e Makefile.package ]; \
 	  then cp Makefile.package.empty Makefile.package; fi
 	@if [ ! -e Makefile.package.settings ]; \
 	  then cp Makefile.package.settings.empty Makefile.package.settings; fi
 	@if [ ! -e $(YESDIR) ]; then \
 	  echo "Package $(@:yes-%=%) does not exist"; \
 	else \
 	  echo "Installing package $(@:yes-%=%)"; \
 	  cd $(YESDIR); $(SHELL) Install.sh 1; cd ..; $(SHELL) Depend.sh 1; \
 	fi;
 
 no-%:
 	@if [ ! -e $(NODIR) ]; then \
 	  echo "Package $(@:no-%=%) does not exist"; \
 	else \
 	  echo "Uninstalling package $(@:no-%=%)"; \
 	  cd $(NODIR); $(SHELL) Install.sh 0; cd ..; $(SHELL) Depend.sh 0; \
         fi;
 
 # status = list src files that differ from package files
 # update = replace src files with newer package files
 # overwrite = overwrite package files with newer src files
 # diff = show differences between src and package files
 
 package-status:
 	@for p in $(PACKAGEUC); do $(SHELL) Package.sh $$p status; done
 	@echo ''
 	@for p in $(PACKUSERUC); do $(SHELL) Package.sh $$p status; done
 
 package-update:
 	@for p in $(PACKAGEUC); do $(SHELL) Package.sh $$p update; done
 	@echo ''
 	@for p in $(PACKUSERUC); do $(SHELL) Package.sh $$p update; done
 
 package-overwrite:
 	@for p in $(PACKAGEUC); do $(SHELL) Package.sh $$p overwrite; done
 	@echo ''
 	@for p in $(PACKUSERUC); do $(SHELL) Package.sh $$p overwrite; done
 
 package-diff:
 	@for p in $(PACKAGEUC); do $(SHELL) Package.sh $$p diff; done
 	@echo ''
 	@for p in $(PACKUSERUC); do $(SHELL) Package.sh $$p diff; done
diff --git a/src/Purge.list b/src/Purge.list
new file mode 100644
index 000000000..81b6ef3c3
--- /dev/null
+++ b/src/Purge.list
@@ -0,0 +1,243 @@
+# auto-generated style files
+style_angle.h
+style_atom.h
+style_bond.h
+style_command.h
+style_compute.h
+style_dihedral.h
+style_dump.h
+style_fix.h
+style_improper.h
+style_integrate.h
+style_kspace.h
+style_minimize.h
+style_pair.h
+style_region.h
+# deleted on Fri Oct 19 15:27:15 2012 +0000
+pair_lj_charmm_coul_long_proxy_omp.cpp
+pair_lj_charmm_coul_long_proxy_omp.h
+pair_lj_class2_coul_long_proxy_omp.cpp
+pair_lj_class2_coul_long_proxy_omp.h
+pair_lj_cut_coul_long_proxy_omp.cpp
+pair_lj_cut_coul_long_proxy_omp.h
+pair_lj_cut_tip4p_long_proxy_omp.cpp
+pair_lj_cut_tip4p_long_proxy_omp.h
+pppm_proxy.cpp
+pppm_proxy.h
+pppm_tip4p_proxy.cpp
+pppm_tip4p_proxy.h
+# deleted on Wed Oct 3 15:17:27 2012 +0000
+pair_lj_cut_coul_long_proxy_tip4p_omp.cpp
+pair_lj_cut_coul_long_proxy_tip4p_omp.h
+# deleted on Wed Oct 3 15:06:24 2012 +0000
+pair_lj_cut_coul_long_tip4p_opt.cpp
+pair_lj_cut_coul_long_tip4p_opt.h
+# deleted on Wed Oct 3 14:53:43 2012 +0000
+pair_lj_charmm_coul_long_proxy_omp.cpp
+pair_lj_charmm_coul_long_proxy_omp.h
+pair_lj_class2_coul_long_proxy_omp.cpp
+pair_lj_class2_coul_long_proxy_omp.h
+pair_lj_cut_coul_long_proxy_omp.cpp
+pair_lj_cut_coul_long_proxy_omp.h
+pair_lj_cut_coul_long_tip4p_omp.cpp
+pair_lj_cut_coul_long_tip4p_omp.h
+# deleted on Wed Oct 3 14:50:44 2012 +0000
+pair_buck_disp_coul_long_omp.cpp
+pair_buck_disp_coul_long_omp.h
+pair_lj_disp_coul_long_omp.cpp
+pair_lj_disp_coul_long_omp.h
+# deleted on Wed Oct 3 14:46:42 2012 +0000
+pair_lj_cut_coul_long_tip4p.cpp
+pair_lj_cut_coul_long_tip4p.h
+# deleted on Wed Oct 3 14:46:23 2012 +0000
+pair_buck_disp_coul_long.cpp
+pair_buck_disp_coul_long.h
+pair_lj_disp_coul_long.cpp
+pair_lj_disp_coul_long.h
+pair_lj_disp_coul_long_tip4p.cpp
+pair_lj_disp_coul_long_tip4p.h
+# deleted on Tue Oct 2 22:50:58 2012 +0000
+pair_buck_coul_omp.cpp
+pair_buck_coul_omp.h
+pair_lj_coul_omp.cpp
+pair_lj_coul_omp.h
+# deleted on Tue Oct 2 20:12:27 2012 +0000
+pair_lj_charmm_coul_pppm_omp.cpp
+pair_lj_charmm_coul_pppm_omp.h
+pair_lj_class2_coul_pppm_omp.cpp
+pair_lj_class2_coul_pppm_omp.h
+pair_lj_cut_coul_pppm_omp.cpp
+pair_lj_cut_coul_pppm_omp.h
+pair_lj_cut_coul_pppm_tip4p_omp.cpp
+pair_lj_cut_coul_pppm_tip4p_omp.h
+# deleted on Tue Oct 2 19:59:40 2012 +0000
+pair_buck_coul_omp.cpp
+pair_buck_coul_omp.h
+pair_lj_coul_omp.cpp
+pair_lj_coul_omp.h
+pair_lj_cut_coul_long_tip4p_omp.cpp
+pair_lj_cut_coul_long_tip4p_omp.h
+pppm_proxy.cpp
+pppm_proxy.h
+pppm_tip4p_proxy.cpp
+pppm_tip4p_proxy.h
+# deleted on Tue Oct 2 19:58:21 2012 +0000
+pair_lj_cut_coul_pppm_omp.cpp
+pair_lj_cut_coul_pppm_omp.h
+pair_lj_cut_coul_pppm_tip4p_omp.cpp
+pair_lj_cut_coul_pppm_tip4p_omp.h
+# deleted on Tue Oct 2 19:58:03 2012 +0000
+pair_lj_charmm_coul_pppm_omp.cpp
+pair_lj_charmm_coul_pppm_omp.h
+pair_lj_class2_coul_pppm_omp.cpp
+pair_lj_class2_coul_pppm_omp.h
+# deleted on Tue Oct 2 16:36:24 2012 +0000
+ewald_n.cpp
+ewald_n.h
+pair_buck_coul.cpp
+pair_buck_coul.h
+pair_lj_coul.cpp
+pair_lj_coul.h
+# deleted on Wed Jul 25 15:17:24 2012 +0000
+pair_lj_sdk_coul_cut_cuda.cpp
+pair_lj_sdk_coul_cut_cuda.h
+pair_lj_sdk_coul_debye_cuda.cpp
+pair_lj_sdk_coul_debye_cuda.h
+# deleted on Tue Jul 24 14:55:49 2012 +0000
+pair_cg_cmm_coul_cut_cuda.cpp
+pair_cg_cmm_coul_cut_cuda.h
+pair_cg_cmm_coul_debye_cuda.cpp
+pair_cg_cmm_coul_debye_cuda.h
+pair_cg_cmm_coul_long_cuda.cpp
+pair_cg_cmm_coul_long_cuda.h
+pair_cg_cmm_cuda.cpp
+pair_cg_cmm_cuda.h
+# deleted on Fri Jan 6 20:58:15 2012 +0000
+fix_reaxc_species.cpp
+fix_reaxc_species.h
+# deleted on Sat Dec 31 20:27:05 2011 -0500
+ewald_cg.cpp
+ewald_cg.h
+# deleted on Sat Dec 31 20:01:21 2011 -0500
+dihedral_omp.cpp
+dihedral_omp.h
+pair_cg_cmm_omp.cpp
+pair_cg_cmm_omp.h
+pair_lj_cut_coul_long_tip4p_omp.cpp
+pair_lj_cut_coul_long_tip4p_omp.h
+pair_omp.cpp
+pair_omp.h
+# deleted on Thu Dec 8 23:13:51 2011 +0000
+pair_cg_cmm_coul_long_gpu.cpp
+pair_cg_cmm_coul_long_gpu.h
+pair_cg_cmm_gpu.cpp
+pair_cg_cmm_gpu.h
+# deleted on Mon Nov 7 19:32:59 2011 -0500
+pair_cg_cmm_coul_long_gpu.cpp
+pair_cg_cmm_coul_long_gpu.h
+pair_cg_cmm_gpu.cpp
+pair_cg_cmm_gpu.h
+# deleted on Tue Oct 25 23:04:03 2011 -0400
+lj_sdk_common.cpp
+# deleted on Fri Oct 7 08:55:40 2011 -0400
+pair_hybrid_overlay_omp.cpp
+pair_hybrid_overlay_omp.h
+# deleted on Fri Oct 7 08:54:38 2011 -0400
+angle_hybrid_omp.cpp
+angle_hybrid_omp.h
+bond_hybrid_omp.cpp
+bond_hybrid_omp.h
+dihedral_hybrid_omp.cpp
+dihedral_hybrid_omp.h
+improper_hybrid_omp.cpp
+improper_hybrid_omp.h
+pair_hybrid_omp.cpp
+pair_hybrid_omp.h
+# deleted on Mon Aug 22 13:48:15 2011 -0400
+omp_thr.cpp
+omp_thr.h
+# deleted on Mon Aug 8 22:56:28 2011 +0000
+dihedral_cosineshiftexp.cpp
+dihedral_cosineshiftexp.h
+# deleted on Mon Aug 8 22:55:20 2011 +0000
+angle_cosineshift.cpp
+angle_cosineshift.h
+angle_cosineshiftexp.cpp
+angle_cosineshiftexp.h
+# deleted on Mon Aug 8 19:25:08 2011 +0000
+pppm_gpu_double.cpp
+pppm_gpu_double.h
+pppm_gpu_single.cpp
+pppm_gpu_single.h
+# deleted on Fri Apr 15 20:57:03 2011 -0400
+pair_lj_charmm_coul_long_gpu2.cpp
+pair_lj_charmm_coul_long_gpu2.h
+# deleted on Wed Apr 13 21:40:14 2011 +0000
+atom_vec_colloid.cpp
+atom_vec_colloid.h
+atom_vec_granular.cpp
+atom_vec_granular.h
+# deleted on Fri Nov 19 12:53:07 2010 -0500
+fix_pour_omp.cpp
+fix_pour_omp.h
+# deleted on Thu Aug 19 23:20:14 2010 +0000
+fix_qeq.cpp
+fix_qeq.h
+# deleted on Thu Jun 17 01:34:38 2010 +0000
+compute_vsum.cpp
+compute_vsum.h
+# deleted on Mon Jun 14 11:06:46 2010 -0400
+pair_buck_coul_omp.cpp
+pair_buck_coul_omp.h
+pair_lj_coul_omp.cpp
+pair_lj_coul_omp.h
+# deleted on Thu Jun 10 15:39:08 2010 -0400
+pair_buck_coul_omp.cpp
+pair_buck_coul_omp.h
+# deleted on Tue Jun 8 15:42:51 2010 -0400
+pair_buck_coul_omp.cpp
+pair_buck_coul_omp.h
+# deleted on Thu Dec 17 23:52:31 2009 +0000
+dump_bond.cpp
+dump_bond.h
+# deleted on Mon Nov 9 18:20:20 2009 +0000
+atom_vec_dpd.cpp
+atom_vec_dpd.h
+style_dpd.h
+# deleted on Mon Jun 22 21:11:31 2009 +0000
+fix_write_reax_bonds.cpp
+fix_write_reax_bonds.h
+# deleted on Thu Jan 8 16:53:09 2009 +0000
+pair_gran_hertzian.cpp
+pair_gran_hertzian.h
+pair_gran_history.cpp
+pair_gran_history.h
+pair_gran_no_history.cpp
+pair_gran_no_history.h
+# deleted on Mon Mar 17 23:24:44 2008 +0000
+compute_temp_dipole.cpp
+compute_temp_dipole.h
+fix_nve_dipole.cpp
+fix_nve_dipole.h
+# deleted on Mon Mar 17 23:23:24 2008 +0000
+fix_nve_gran.cpp
+fix_nve_gran.h
+# deleted on Fri Nov 30 21:49:20 2007 +0000
+fix_gran_diag.cpp
+fix_gran_diag.h
+atom_angle.cpp
+atom_angle.h
+atom_bond.cpp
+atom_bond.h
+atom_full.cpp
+atom_full.h
+atom_molecular.cpp
+atom_molecular.h
+# deleted on Tue Jan 30 00:22:05 2007 +0000
+atom_dpd.cpp
+atom_dpd.h
+atom_granular.cpp
+atom_granular.h
+# deleted on Wed Dec 13 00:34:21 2006 +0000
+fix_insert.cpp
+fix_insert.h