added class code and spec requirements