not so stupid but complicated