this is a really ugly interface name .. but cannot think of any thing better