implementation almost done ... huge switch case missing