Final Version so far