Added output directory option and optional implementation header generation