cleaned long method