add generic support
update .gitignore