bind interface with closure
bunch of stuff