added some comments, extracted #call logic to #call! because this method HAS side effects