reorganizing, using function parsers, incomplete