move out state creation
use range().rev() to count backwards