parse and construct