simple placeholder resolver without cycle detection and dynamic placeholder names support