added convenience method parse()