some reworking