different elements type support (first draft version, should be improved)