working through interfaces