Added possibility for crystal and broke out remaining I/O to header