add RuntimeException
revise error checking