general restructuring, use projectile for compiling