refactored to properly chain calling at eval time instead of
only chaining at declaration