everything backend is done except to update pixel