i like a little whitespace to split this function into 'blocks'.