broke out classes to their own files and added pre and post amble