refactor listing and form