written as main package