finished design patterns (i think)