organize abstract consumers
add .swp in .gitignore
reorganize consumers in implementation