starting on a lightweight actor system in typescript to help split things up