implement parse