ENH:reconstruct project in a software engineer way