Designing for Freedom: Erlang Generic Servers