Hook UI callbacks one by one, keeping construction simple