Revamp printing and add argchecks