making statelist a functor instead of polymorphic