separating user interface into category from core implementation.