move some code to shared module, add problem 15 code