UPDATED AND WORKS