learning oo patterns and stuff