GoF in Javascript.