started adding textblock object, realized I need a cached monad for context to measure text boudning boxes