split interface and checking functions