added functionality. a long way to go...