mid term rev 02, refactored, plus final project specs