made implementation cleaner