Implementing from scratch versus a library/framework