Project second iteration
Cleaner than the first :)