manual generation