much more clean and bug-free updating using placeholders