type parsing
TODO: tests