reworked first 4 methods