add Preconditions + optim Parser