Reverted due to a better approach