first factor and gm implementations
add *.swp to gitignore