reworking interface logic