reworked every thing