interface improvements/rewrite