sample implementation for lamp