#21 some clean coding