Refactoring form ongoing, #16

Still need to confront with Pure's version