Add better implementation, more lightweight.