Moving logic to __call