First pass at abstaction from project