refactor
refactor more
return errors of argument checks
update tests
change status if errors found