almost done with the overall interface