add more comments
move Container to lib