Cleaned up and updated