working level 1
partial level 2 implemented
final for demo