execute can return false or throw exceptions - this should be handled