optimize Pack
introduce interface Pack
first draft