reorganize code to make it more readable