a more readable version