add mix.lock to gitignore
simplified new function head, switched to private _new with pattern matched units instead of when clauses