Closes issue #1 ... final implementation