functional, but not pretty