modified several classes to be final. also started working on the external protocol