first pass at MarkovKey object