add SA implementation