WIP. Divided into few packages