2nd 1st rev
functional version