changed interface a little bit