converted to dart except for colors