Much nicer OO-style code