implemented singleton for testing