try reduce abstractness, looks like working