move out prototypes as template