almost figured out a framework