color and timing are mostly done i think