add projectile
merge from trunk