implement new reserve logic