a simple crawler framework