reworking from scratch