Use functional inheritance pattern