made button controller optional. #9