add several typs
complete rework
add example