watch & build listener