at some point we should factor this Action class out somehow