ui abstractions