add contractParser, incomplete