reworked custom methods