initial commit - completes 1, 2, 3 and 4 from README