redo zetcode exercise