need refactor
formatting