basic template + data structures