Changed to a more extensible model