wow! such changes! so commit! much functions!