reduce the dependency,  make buttons demo self-contained