initial. unfortuntately I need to figure out what to do about char specialization