first/last workspace; condition callback; style