This document discusses process design and polymorphism based on lessons learned from developing Kai, an open source implementation of Amazon's Dynamo key-value store in Erlang. It outlines rules for process design including assigning concurrent activities to separate processes and not spawning stateless processes. It also describes two approaches to implementing polymorphism in the actor model inspired by interfaces and abstract classes in Java. Concrete examples from Kai's implementation are provided.