begin reworking interface logic