Writing maintainable code