cleanup & improve