rewritten: OOP and ie8