feat(functional refactor): start moving action handling to engine