first part for basic idea