[UPDATE] extracted out reusable components.