messy.. long.. complicated. please help