answers are here
skeleton version