Reconstruced

Nothing is changed, but make it smarter.