possibly doable version
a naive yet doable version
final version