finished with implementation - working copy