template now works on more strict compiler environment --kazu