Close #6: Refactor to use extension rather expose task internals