My latest version after clean up