better OOP approach
added: complete function
update