Add generics to avoid warnings
Move source to separate directory
Add ignore and first revision build script