better formatting. worse code