reworked the interface