[major] add first part of logic