placeholder & widget refactoring